第一种:
不需要华东来替换,使用场景是点击一个按钮,直接切换一个fragment。
使用FrameLayout来占位,
按钮1 点击的时候:
private void initFragment1(){ //开启事务,fragment的控制是由事务来实现的 FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // //第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个 // if(loginFragment == null){ // loginFragment = new LoginFragment(); // transaction.add(R.id.fragme_my_login_register, loginFragment; // } // //隐藏所有fragment // hideFragment(transaction); // //显示需要显示的fragment // transaction.show(loginFragment); // 第二种方式(replace),初始化fragment if(loginFragment == null){ loginFragment = new LoginFragment(); } transaction.replace(R.id.fragme_my_login_register, loginFragment); //提交事务 transaction.commit(); }、
按钮2 点击的时候:
//显示第二个fragment private void initFragment2(){ FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); // if(registerFragment == null){ // registerFragment = new RegisterFragment(); // transaction.add(R.id.main_frame_layout,registerFragment); // } // hideFragment(transaction); // transaction.show(f2); if(registerFragment == null) { registerFragment = new RegisterFragment(); } transaction.replace(R.id.fragme_my_login_register, registerFragment); transaction.commit(); }默认在界面出现的时候调用第一个,就直接在onCreate()方法中调取。
第二种:讲究两个fragment之间切换。
fragments = new ArrayList<Fragment>(); fragments.add(loginFragment); fragments.add(registerFragment); FragmentManager manager = getSupportFragmentManager(); viewPager.setAdapter(new MyFragmentAdapter(manager)); } class MyFragmentAdapter extends FragmentStatePagerAdapter{ public MyFragmentAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } } //退出登录的方法 public void loginOut() { EMClient.getInstance().logout(true, new EMCallBack() { @Override public void onSuccess() { Log.i("log", "退出成功"); } @Override public void onProgress(int progress, String status) { } @Override public void onError(int code, String message) { Log.i("log", "退出失败" + code + " " + message); } }); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_at_login: /** * 为了防止重叠,需要点击之前先移除其他Fragment */ ToastUtils.isShow(RegisterAndLoginActivity.this,"点击了登录"); changeView(0); break; case R.id.btn_at_register: ToastUtils.isShow(RegisterAndLoginActivity.this,"点击了注册"); changeView(1); break; } } //手动设置ViewPager要显示的视图 private void changeView(int desTab) { viewPager.setCurrentItem(desTab, true); }