小标
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号