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();
    }
    });
    }
    }
上一篇:Java——设计模式(装饰模式_IO)


下一篇:Java程序通过代理访问网络