記錄下切換fragment不重新實例化的方法:像淘寶 京東都是這樣的效果.
PRivate WarnFragment mWarnFragment; //申明3個fragment //我的 private MyselfFragment mMyselfFragment; //預警 private CloudFragment mCloudFragment; //云//點擊事件mMainRbCloud.setOnClickListener(this); mMainRbWarn.setOnClickListener(this); mMainRbMine.setOnClickListener(this);//默認選中第一個setTabSelected(0);//點擊事件@Override public void onClick(View v) { switch (v.getId()) { case R.id.main_rb_cloud: setTabSelected(0); break; case R.id.main_rb_warn: setTabSelected(1); break; case R.id.main_rb_mine: setTabSelected(2); break; } }//顯示fragment private void setTabSelected(int index) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); hideFragments(transaction); //先隱藏所有的fragment switch (index) { case 0: if(mCloudFragment == null) { mCloudFragment = new CloudFragment(); transaction.add(R.id.main_fr_content,mCloudFragment); } else { transaction.show(mCloudFragment); } break; case 1: if(mWarnFragment == null) { mWarnFragment = new WarnFragment(); transaction.add(R.id.main_fr_content,mWarnFragment); } else { transaction.show(mWarnFragment); } break; case 2: if(mMyselfFragment == null) { mMyselfFragment = new MyselfFragment(); transaction.add(R.id.main_fr_content,mMyselfFragment); } else { transaction.show(mMyselfFragment); } break; } transaction.commit(); } //隱藏所有fragment防止顯示多個 private void hideFragments(FragmentTransaction transaction) { if(mCloudFragment!=null) { transaction.hide(mCloudFragment); } if(mWarnFragment!=null) { transaction.hide(mWarnFragment); } if(mMyselfFragment!=null) { transaction.hide(mMyselfFragment); } }上面是核心代碼, 具體要切換按鈕的狀態(tài),自己隨意寫.
新聞熱點
疑難解答