android中在fragment A里面点击button跳转到fragment B怎么实现?

 

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

假设

 

class OneFragment extends Fragment{    private Button btn;    @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) {                FragmentManager fm = getActivity().getFragmentManager();                fm.beginTransaction()                //替换为TwoFragment                .replace(R.layout.fragment_container,new TwoFragment())                .commit();            }        });        return super.onCreateView(inflater, container, savedInstanceState);    }}

 

但是这样做会使OneFragment和原activity的耦合度提高,fragment设计出来就是有重用的目的,所以不好,使用方法二

 

方法2:定义回调函数,当button按下调用回调

class OneFragment extends Fragment{    private Button btn;    private OnButtonClick onButtonClick;    @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) {                if(onButtonClick!=null){                    onButtonClick.onClick(btn);                }            }        });        return super.onCreateView(inflater, container, savedInstanceState);    }    public OnButtonClick getOnButtonClick() {        return onButtonClick;    }    public void setOnButtonClick(OnButtonClick onButtonClick) {        this.onButtonClick = onButtonClick;    }    public interface OnButtonClick{        public void onClick(View view);    }}

 

这样只要在acitivty中设置回调即可

 

public class MainActivity extends Activity {     private OneFragment oneFragment = new OneFragment();    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //。。。        //。。。省略代码        oneFragment.setOnButtonClick(new OnButtonClick() {                         @Override            public void onClick(View view) {                //切换到TwoFragment                fm.beginTransaction()                //替换为TwoFragment                .replace(R.layout.fragment_container,new TwoFragment())                .commit();            }        });    }}

 

更多相关文章

  1. Android(安卓)JNI技术, NDK开发
  2. Android中常用的bitmap处理方法 (bitmap工具类)
  3. android如何获取默认的桌面程序
  4. Android(安卓)camera 设置聚焦区域
  5. android Launcher:AllApps的更新分析
  6. android Fragment 懒加载布局
  7. webview内H5与原生安卓和IOS交互(互调方法/传值)
  8. android context调用startActivity时报错:Calling startActivity(

随机推荐

  1. Android图形解锁的绘制
  2. Android 模拟器支持的分辨率
  3. android linux工具移植
  4. Android 提示框
  5. 在Android中使用Gradle
  6. Mac os Android 源码开发环境搭建
  7. unity游戏在安卓按home或者锁屏键后不能
  8. android 实现拖动效果
  9. getActionBar() return null
  10. android 通过构造创建进度对话框