zoukankan      html  css  js  c++  java
  • 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、定义接口成员变量的get和set方法,主要是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();
                    }
                });
            }
        }
    绳锯木断,水滴石穿。海纳百川,积少成多。一分耕耘,一份收获。
  • 相关阅读:
    search
    longestValidParentheses
    nextPermutation
    linux下通过安装xampp搭建环境卸载xampp、以及网站搬家-64位系统Apache启动不了的问题
    对拍器 ADC-ACMDataCreater
    Educational Codeforces Round 86 (Rated for Div. 2) A~D
    Codeforces Round #637 (Div. 2) A~D
    Codeforces Round #636 (Div. 3) A~D
    Codeforces Round #635 (Div. 2) A~D
    原型设计工具比较及实践 基于WolframAlphaAPI的科学计算器原型设计
  • 原文地址:https://www.cnblogs.com/tittles0k/p/5864623.html
Copyright © 2011-2022 走看看