您的位置:首页 > 移动开发 > Android开发

安卓在一个活动(Activity)里加载碎片(Fragment)并切换到另一个碎片(Fragment)

2017-02-22 14:02 435 查看
我在开发的时候遇到了这个问题,就是如何在Activity加载一个Fragment并通过点击Fragment里面的Button切换到其他Fragment,当时我也找了很多资料但感觉不怎么实用最后想了很久终于想到一个方法解决这个问题:也就是通过使用异步(handler)来实现,我们首先在加载Fragment的Activity中写

 

实现切换部分:

 public Handler handler =new Handler(){ @Override public void handleMessage(Message me){ switch (me.what){ case 1: ChuShi(new ChuShi());//加载碎片1 break; case 2: ChuShi(new Qinli());//加载碎片2 break; } } };

被调用的方法:

public  void  Qiehuan(int a)

{

    Message message = new Message();

    message.what =a;

    handler.sendMessage(message);

}

加载碎片(Fragment)部分:

private  void ChuShi(Fragment fragment){//创建待添加的碎片实例

    FragmentManager fragmentManager =getSupportFragmentManager();/*获取FragmentManager,在活动中可以直接通过调用getSupportFragmentManager()方法的到*/

    FragmentTransaction transaction =fragmentManager.beginTransaction();/*开启一个事务,通过调用beginTransaction()方法开启。

    transaction.replace(R.id.fragm,fragment);//向容器添加或替换碎片一般使用replace实现

    transaction.commit();//提交事物,调用commit方法来完成

}

Fragment调用Activity里方法实现切换到另一个Fragment:

public void onStart() {

final MainActivity mainActivity = (MainActivity) getActivity();//从Fragment取得Activity实例

imageView.setOnClickListener(new View.OnClickListener(){//图片按钮被按下

    @Override

    public void onClick(View v){//第一个按钮被按下

        CheckBox checkBox =(CheckBox) getView().findViewById(R.id.ch);

        if(checkBox.isChecked()){

            //选中

            mainActivity.Qiehuan(1);//调用Activity的Qiehuan方法实现切换

        }

        else {

           //没选中

            mainActivity.Qiehuan(2);          }    }});

}

思路很简单也就是通过在Activity里面使用handler来实现Fragment页面的切换欢迎各位朋友指出文中出现的错误和不足!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐