1,问题:
应用长期在后台的场景下,进入前台时,fragment显示为空白
2,app框架大体实现:
1个activity+多个Fragment,使用的是add()方法以及 hide(),show()方法,显示fragment
3,相关代码:
onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 判断 savedInstanceState是否为空: setCanResizeWindow(false); maskView = new View(getApplicationContext()); maskView.setBackground(new ColorDrawable(Color.parseColor("#30000000"))); maskView.setClickable(true); maskView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { removeMask(); } }); setContentView(R.layout.activity_home); EventBus.getDefault().register(this); //3,个推 PushManager.getInstance().initialize(getApplicationContext()); initView(savedInstanceState); getUserData(); getDataFromMsgBrief(); } private void initView(Bundle savedInstanceState) { mBottomDial = (LinearLayout) findViewById(R.id.btn_Dial); mBottomComm = (LinearLayout) findViewById(R.id.btn_comm); mBottomContact = (LinearLayout) findViewById(R.id.btn_contact); mBottomLife = (LinearLayout) findViewById(R.id.btn_life); mBottomDialIv = (ImageView) findViewById(R.id.tab_dial_image); mBottomDiaTv = (TextView) findViewById(R.id.tab_dial_text); mSmsIV = (SmsImageView) findViewById(R.id.siv_sms_icon_homeact); //第一次登录系统时,修改数据库的Istravelrely字段 if (!SpUtils.getSynDB(getApplicationContext())) { ThreadPoolUtil.getmExecutor().execute(new Runnable() { @Override public void run() { CopyLocalContactsUtils.checkIsTravelRely(getApplication()); SpUtils.setSynDB(getApplicationContext()); } }); } //初始化mBottomDial为选中状态,fl_content填充DialFragment mBottomDial.setSelected(true); // if (savedInstanceState != null) { // LogUtils.d("HomeActivity savedInstanceState != null"); // // Fragment dialFragment = getSupportFragmentManager().findFragmentByTag(DIAL_TAG); // Fragment contactFragment = getSupportFragmentManager().findFragmentByTag(CONTACT_TAG); // Fragment commFragment = getSupportFragmentManager().findFragmentByTag(COMM_TAG); // Fragment lifeFragment = getSupportFragmentManager().findFragmentByTag(LIFE_TAG); //// getSupportFragmentManager().beginTransaction() // // getSupportFragmentManager().beginTransaction().hide(contactFragment) // .hide(commFragment).hide(lifeFragment).show(dialFragment).commit(); // // } else { getSupportFragmentManager().beginTransaction(). add(R.id.fl_content, FragmentFactory.createFragment(0), "DialFragment"). add(R.id.fl_content, FragmentFactory.createFragment(1), "CommFragment"). add(R.id.fl_content, FragmentFactory.createFragment(2), "ContactFragment"). add(R.id.fl_content, FragmentFactory.createFragment(3), "LifeFragment"). hide(FragmentFactory.createFragment(1)). hide(FragmentFactory.createFragment(2)). hide(FragmentFactory.createFragment(3)). show(FragmentFactory.createFragment(0)).commit(); // } initClick(); }
尝试过的解决办法:
1,为了解决多个fragment重叠显示,在activity的中执行了如下:
@Override protected void onSaveInstanceState(Bundle outState) { // super.onSaveInstanceState(outState); }
问题现象:
内容有点乱,对于你这种需求,推荐使用
FragmentTabHost
,也就没有这种乱七八糟的问题了。一周热门 更多>