JAVA语言之java.lang.IllegalStateException: Can not perform this action after onSave
小标 2018-11-05 来源 : 阅读 1459 评论 0

摘要:本文主要向大家介绍了JAVA语言之java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState问题分析和解决办法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState问题分析和解决办法,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。


首先描述下所要实现的功能点:


MainActivity使用Fragment实现底部菜单,底部共有四个菜单按钮,分别对应:AFragment,BFragment,CFragment,DFragment。其中AFragment是默认显示。


点击CFragment中的一个button后跳转到第二个Activity界面:SecondActivity。


SecondActivity返回键有两个:button01、button02.其中button01返回的是CFragment;button02返回的是AFragment。


问题出现了:


button01可以返回到MainActivity中的CFragment,但是button02却没实现返回到MainActivity中的AFragment,无论是在SecondActivity中使用finish(),还是使用Intent跳转,都不能实现返回到MainActivity中的AFragment。


最后想到了广播机制来实现(我总感觉应该有更简单更好的方法,却始终没找到,迫不得已使用广播机制)。


去出现了另外一个问题:


Fragment java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState。


最后fragmentTransaction.commitAllowingStateLoss()替换掉fragmentTransaction.commit()解决问题。


最后再浏览下代码:


import java.util.ArrayList;  

   

import android.annotation.SuppressLint;  

import android.app.Activity;  

import android.app.AlertDialog;  

import android.app.Dialog;  

import android.content.BroadcastReceiver;  

import android.content.Context;  

import android.content.DialogInterface;  

import android.content.Intent;  

import android.content.IntentFilter;  

import android.graphics.Color;  

import android.graphics.drawable.Drawable;  

import android.os.Bundle;  

import android.support.v4.app.FragmentManager;  

import android.support.v4.app.FragmentTransaction;  

import android.view.MotionEvent;  

import android.view.View;  

import android.view.View.OnClickListener;  

import android.widget.ImageButton;  

import android.widget.TextView;  

   

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;  

import com.nostra13.universalimageloader.core.ImageLoader;  

import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;  

import com.nostra13.universalimageloader.core.assist.QueueProcessingType;  

   

public class MainActivity extends BaseActivity {  

    private static final String LOG_TAG = MainActivity.class.getSimpleName();  

       

    private FragmentManager fragmentManager;  

    private TextView txt_home;  

    private TextView txt_find;  

    private TextView txt_collection;  

    private TextView txt_setting;  

       

    private FragmentTransaction transaction;  

    private HomeFragment homeFragment;  

    private FindFragment findFragment;  

    private CollectionFragment collectionFragment;  

    private SettingFragment settingFragment;  

    private ImageButton imgbtn_voice;  

    private final static int SCANNIN_GREQUEST_CODE = 65537;  

   

    private BackBroadcast backBroadcast;  

       

    @Override 

    protected void onCreate(Bundle savedInstanceState) {  

        super.onCreate(savedInstanceState);  

        ResourceHelper.activityContext = this;  

   

        setContentView(R.layout.activity_main);  

   

        initImageLoaderConfi();  

   

        initView();  

           

               

    }  

   

    /** 

     * 底部菜单切换 

     */ 

    private void initView() {  

        fragmentManager = getSupportFragmentManager();  

           

        txt_home       = (TextView) findViewById(R.id.home_text);  

        txt_find       = (TextView) findViewById(R.id.find_text);  

        txt_collection = (TextView) findViewById(R.id.collection_text);  

        txt_setting    = (TextView) findViewById(R.id.setting_text);  

           

        txt_home.setOnClickListener(new OnClickListener() {  

   

            @Override 

            public void onClick(View v) {  

                setTabSelection(0);  

            }  

        });  

        txt_find.setOnClickListener(new OnClickListener() {  

   

            @Override 

            public void onClick(View v) {  

                setTabSelection(1);  

            }  

        });  

        txt_collection.setOnClickListener(new OnClickListener() {  

   

            @Override 

            public void onClick(View v) {  

                setTabSelection(2);  

            }  

        });  

        txt_setting.setOnClickListener(new OnClickListener() {  

   

            @Override 

            public void onClick(View v) {  

                setTabSelection(3);  

            }  

        });  

        setTabSelection(0);  

    }  

   

    @SuppressLint("NewApi")  

    public void setTabSelection(int index) {  

        clearSelection();  

        transaction = fragmentManager.beginTransaction();  

        hideFragments(transaction);  

        switch (index) {  

         

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!


本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved