這是一個主界面,頂部是Fragment,底部四個RadioButton.當(dāng)我打開主界面然后選中最后一個"我的"模塊,然后直接按home鍵返回手機桌面.但是過幾分鐘點擊打開APP會錯亂:RadioButton選中的是"我的",但是Fragment選中的確是第一個,應(yīng)該是內(nèi)存回收導(dǎo)致的,請問這樣的問題該怎么解決呢?
截圖和代碼:
/**
* 主界面
*/
public class MainActivity extends BaseActivity implements View.OnClickListener {
@BindView(R.id.rb_home)
RadioButton mHome;
@BindView(R.id.rb_channel)
RadioButton mChannel;
@BindView(R.id.rb_discovery)
RadioButton mDiscovery;
@BindView(R.id.rb_mine)
RadioButton mMine;
@BindView(R.id.rg_tabs)
RadioGroup mTabs;
@BindView(R.id.iv_switch_game_normal)
ImageView mSwitchGameNormal;
@BindView(R.id.iv_close)
ImageView mClose;
private int currentButton = -1;
private static final int REQUEST_EXTERNAL_STORAGE = 3;
FragmentManager manager;
FragmentTransaction transaction;
private PopupWindow mPopupWindow;
private static String[] PERMISSIONS_STORAGE = {Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};
private String mLocalVersion;
private String mToken;
private String logoutFailMsg;
private RotateAnimation mRotateAnimation;
private HomeFragment homeFragment;
private ChannelFragment channelFragment;
private DiscoveryFragment discoveryFragment;
private MineFragment mineFragment;
@Override
protected View initView() {
View view = View.inflate(this, R.layout.activity_main, null);
ButterKnife.bind(this, view);
mIvMore.setImageResource(R.mipmap.search);
mTabs.check(R.id.rb_home);//默認(rèn)選中首頁
mIvBack.setVisibility(View.GONE);
frameLayout.addView(view);
return view;
}
@Override
protected void initData() {
// NetWorkStatusUtils.checkNetWork(this);//當(dāng)前網(wǎng)絡(luò)狀態(tài)檢查
int localVersionCode = PackageUtils.getVersionCode(this);
mLocalVersion = String.valueOf(localVersionCode);//本地版本號
Log.d(TAG, "initData: 1055=" + mLocalVersion);
//獲取token
mToken = PreferenceUtils.getString(this, "token");
showHomePage(); //打開界面即顯示首頁內(nèi)容
startService(new Intent(this, NetworkWatchService.class));
}
@Override
protected void initEvent() {
mHome.setOnClickListener(this);
mChannel.setOnClickListener(this);
mDiscovery.setOnClickListener(this);
mMine.setOnClickListener(this);
mIvMore.setOnClickListener(this);
mTvTitle.setOnClickListener(this);
mSwitchGameNormal.setOnClickListener(this);
}
/**
* 打開界面即顯示首頁內(nèi)容
*/
private void showHomePage() {
mTabs.check(R.id.rb_home);
//TODO:代碼待優(yōu)化
int homeButton = 0;//避免選中模塊后重復(fù)點擊
if (currentButton == homeButton) {
return;
}
mTvTitle.setText("首頁");
mIvMore.setVisibility(View.VISIBLE);
mIvMore.setImageResource(R.mipmap.search);
mMainTitle.setVisibility(View.VISIBLE);
manager = getFragmentManager();
transaction = manager.beginTransaction();
mTvTitle.setTextColor(ActivityCompat.getColor(this, R.color.cl_default));
mToolbar.setBackgroundColor(ActivityCompat.getColor(this, R.color.colorWhite));
homeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("tab1");
channelFragment = (ChannelFragment) getFragmentManager().findFragmentByTag("tab2");
discoveryFragment = (DiscoveryFragment) getFragmentManager().findFragmentByTag("tab3");
mineFragment = (MineFragment) getFragmentManager().findFragmentByTag("tab4");
if (homeFragment == null) {
homeFragment = new HomeFragment();
transaction.add(R.id.fl_container, homeFragment, "tab1");
}
if (channelFragment != null)
transaction.hide(channelFragment);
if (discoveryFragment != null)
transaction.hide(discoveryFragment);
if (mineFragment != null)
transaction.hide(mineFragment);
transaction.commit();
transaction.show(homeFragment);
currentButton = 0;
}
/**
* 頻道
*/
private void showChannelPage() {
mTabs.check(R.id.rb_channel);
int channelButton = 1;//避免選中模塊后重復(fù)點擊
if (currentButton == channelButton) {
return;
}
mTvTitle.setText("頻道");
mIvTitle.setVisibility(View.GONE);
mIvMore.setVisibility(View.GONE);
mIvMore.setImageResource(R.mipmap.search);
mMainTitle.setVisibility(View.VISIBLE);
mTvTitle.setTextColor(ActivityCompat.getColor(this, R.color.cl_default));
mToolbar.setBackgroundColor(ActivityCompat.getColor(this, R.color.colorWhite));
manager = getFragmentManager();
transaction = manager.beginTransaction();
homeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("tab1");
channelFragment = (ChannelFragment) getFragmentManager().findFragmentByTag("tab2");
discoveryFragment = (DiscoveryFragment) getFragmentManager().findFragmentByTag("tab3");
mineFragment = (MineFragment) getFragmentManager().findFragmentByTag("tab4");
if (channelFragment == null) {
channelFragment = new ChannelFragment();
transaction.add(R.id.fl_container, channelFragment, "tab2");
}
if (homeFragment != null) {
transaction.hide(homeFragment);
}
if (discoveryFragment != null) {
transaction.hide(discoveryFragment);
}
if (mineFragment != null) {
transaction.hide(mineFragment);
}
transaction.show(channelFragment);
transaction.commit();
currentButton = 1;
}
/**
* 發(fā)現(xiàn)
*/
private void showDiscoveryPage() {
mTabs.check(R.id.rb_discovery);
int discoveryButton = 2;//避免選中模塊后重復(fù)點擊
if (currentButton == discoveryButton) {
return;
}
mTvTitle.setText("發(fā)現(xiàn)");
mIvTitle.setVisibility(View.GONE);
mIvMore.setVisibility(View.GONE);
mMainTitle.setVisibility(View.VISIBLE);
mTvTitle.setTextColor(ActivityCompat.getColor(this, R.color.cl_default));
mToolbar.setBackgroundColor(ActivityCompat.getColor(this, R.color.colorWhite));
manager = getFragmentManager();
transaction = manager.beginTransaction();
homeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("tab1");
channelFragment = (ChannelFragment) getFragmentManager().findFragmentByTag("tab2");
discoveryFragment = (DiscoveryFragment) getFragmentManager().findFragmentByTag("tab3");
mineFragment = (MineFragment) getFragmentManager().findFragmentByTag("tab4");
if (discoveryFragment == null) {
discoveryFragment = new DiscoveryFragment();
transaction.add(R.id.fl_container, discoveryFragment, "tab3");
}
if (homeFragment != null) {
transaction.hide(homeFragment);
}
if (channelFragment != null) {
transaction.hide(channelFragment);
}
if (mineFragment != null) {
transaction.hide(mineFragment);
}
transaction.show(discoveryFragment);
transaction.commit();
currentButton = 2;
}
/**
* 我的
*/
private void showMinePage() {
mTabs.check(R.id.rb_mine);
int mineButton = 3;//避免選中模塊后重復(fù)點擊
if (currentButton == mineButton) {
return;
}
mTvTitle.setText("我的");
mIvMore.setImageResource(R.mipmap.setting);
mIvMore.setVisibility(View.VISIBLE);
mTvTitle.setTextColor(ActivityCompat.getColor(this, R.color.colorWhite));
mToolbar.setBackgroundColor(ActivityCompat.getColor(this, R.color.orange));
manager = getFragmentManager();
transaction = manager.beginTransaction();
homeFragment = (HomeFragment) getFragmentManager().findFragmentByTag("tab1");
channelFragment = (ChannelFragment) getFragmentManager().findFragmentByTag("tab2");
discoveryFragment = (DiscoveryFragment) getFragmentManager().findFragmentByTag("tab3");
mineFragment = (MineFragment) getFragmentManager().findFragmentByTag("tab4");
if (mineFragment == null) {
mineFragment = new MineFragment();
transaction.add(R.id.fl_container, mineFragment, "tab4");
}
if (homeFragment != null) {
transaction.hide(homeFragment);
}
if (channelFragment != null)
transaction.hide(channelFragment);
if (discoveryFragment != null)
transaction.hide(discoveryFragment);
transaction.show(mineFragment);
transaction.commit();
currentButton = 3;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.rb_home:
showHomePage();
break;
case R.id.rb_channel:
showChannelPage();
break;
case R.id.rb_discovery:
showDiscoveryPage();
break;
case R.id.rb_mine:
showMinePage();
break;
case R.id.iv_more:
if (currentButton == 0) {
mIvMore.setImageResource(R.mipmap.search);
Intent toSearch = new Intent(MainActivity.this, SearchActivity.class);
startActivity(toSearch);
} else if (currentButton == 3) {
Intent toAccountSetting = new Intent(this, AccountSettingActivity.class);
startActivity(toAccountSetting);
}
break;
case R.id.iv_switch_game_normal://未彈出window前點擊
mClose.setVisibility(View.VISIBLE);
mRotateAnimation = new RotateAnimation(0f, 90f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
mRotateAnimation.setDuration(300);
mClose.setAnimation(mRotateAnimation);
break;
default:
break;
}
}
}
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。