单activity+多fragment场景,应用长时间在后台进入前台时,fragment全部是空白 财富值14

2016-10-12 07:52发布

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);     } 

问题现象:

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答

内容有点乱,对于你这种需求,推荐使用FragmentTabHost,也就没有这种乱七八糟的问题了。

一周热门 更多>