Android -------- 从一个Fragment跳转到另一个Fragment

一、直接getActivity,使用activity的fragmenttransation的replace方法替换

private void changeToAnotherFragment(){
    //如果是用的v4的包,则用getActivity().getSuppoutFragmentManager();
    FragmentManager fm = getActivity().getFragmentManager();
    //注意v4包的配套使用
    Fragment fragment = new 目标fragment();
    fm.beginTransaction().replace(容器控件id,fragment).commit();
}

二、定义回调函数(推荐)

  • 实现步骤
定义回调,并利用回调结果实现功能
    1、定义接口,并声明其包含的方法,
    2、定义接口成员变量,
    3、定义接口成员变量的getset方法,主要是set方法,给成员变量赋值,
    4、调用,判断如果成员变量不为空(null),则调用接口中的方法。
实现回调
    1、实例化包含回调接口的类,即定义类对象
    2、对象调用set方法,将接口回传
    3、实现接口中的方法,注意:该实现只在此处起作用。

三、举例

  • 定义包含有接口的类

    class OneFragment extends Fragment{
        private Button btn;
        private OnButtonClick onButtonClick;//2、定义接口成员变量
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.frag_one, null);
            btn = (Button)view.findViewById(R.id.button);
            btn.setOnClickListener(new OnClickListener() {
    
                @Override
                public void onClick(View v) {
                    //4、如果接口成员变量不为空null,则调用接口变量的方法。
                    if(onButtonClick!=null){
                        onButtonClick.onClick(btn);
                    }
                }
            });
            return super.onCreateView(inflater, container, savedInstanceState);
        }
        //定义接口变量的get方法
        public OnButtonClick getOnButtonClick() {
            return onButtonClick;
        }
        //定义接口变量的set方法
        public void setOnButtonClick(OnButtonClick onButtonClick) {
            this.onButtonClick = onButtonClick;
        }
        //1、定义接口
        public interface OnButtonClick{
            public void onClick(View view);
        }
    }
  • 这样只要在acitivty中设置回调即可

    public class MainActivity extends Activity {
        //1、实例化类对象
        private OneFragment oneFragment = new OneFragment();
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //。。。
            //。。。省略代码
            //2、调用对象的set方法,回传接口对象
            oneFragment.setOnButtonClick(new OnButtonClick() {
                //3、实现接口对象的方法,
                @Override
                public void onClick(View view) {
                    //切换到TwoFragment
                    fm.beginTransaction()
                    //替换为TwoFragment
                    .replace(R.layout.fragment_container,new TwoFragment())
                    .commit();
                }
            });
        }
    }
绳锯木断,水滴石穿。海纳百川,积少成多。一分耕耘,一份收获。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值