這是一個主界面,頂部是Fragment,底部四個RadioButton.當我打開主界面然后選中最后一個"我的"模塊,然后直接按home鍵返回手機桌面.但是過幾分鐘點擊打開APP會錯亂:RadioButton選中的是"我的",但是Fragment選中的確是第一個,應該是內(nèi)存回收導致的,請問這樣的問題該怎么解決呢?
截圖和代碼:
/**
* 主界面
*/
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);//默認選中首頁
mIvBack.setVisibility(View.GONE);
frameLayout.addView(view);
return view;
}
@Override
protected void initData() {
// NetWorkStatusUtils.checkNetWork(this);//當前網(wǎng)絡狀態(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;//避免選中模塊后重復點擊
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;//避免選中模塊后重復點擊
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;//避免選中模塊后重復點擊
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;//避免選中模塊后重復點擊
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年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產(chǎn)業(yè)為響應國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產(chǎn)業(yè)鏈。利用北京大學優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。