“;java.lang.IllegalStateException:活动已被销毁”;在Android上恢复碎片活动后
我正在使用这种方法: 我试图从第一个片段推送片段,在恢复FragmentActivity之后,此操作会导致“Activity has destroming”错误。当第一次推送片段时,它工作正常,但当我暂停(最小化应用程序)该片段活动,重新打开它,然后尝试推送片段时,它给出了错误。我知道这个问题已经被问过很多次了,但我无法从中得到任何解决方案 错误“;java.lang.IllegalStateException:活动已被销毁”;在Android上恢复碎片活动后,android,android-fragments,android-fragmentactivity,Android,Android Fragments,Android Fragmentactivity,我正在使用这种方法: 我试图从第一个片段推送片段,在恢复FragmentActivity之后,此操作会导致“Activity has destroming”错误。当第一次推送片段时,它工作正常,但当我暂停(最小化应用程序)该片段活动,重新打开它,然后尝试推送片段时,它给出了错误。我知道这个问题已经被问过很多次了,但我无法从中得到任何解决方案 错误 02-05 11:51:01.889:E/AndroidRuntime(379):致命异常:主 02-05 11:51:01.889:E/Androi
02-05 11:51:01.889:E/AndroidRuntime(379):致命异常:主
02-05 11:51:01.889:E/AndroidRuntime(379):java.lang.IllegalStateException:活动已被销毁
02-05 11:51:01.889:E/AndroidRuntime(379):在android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)
02-05 11:51:01.889:E/AndroidRuntime(379):在android.support.v4.app.BackStackRecord.committernel(BackStackRecord.java:595)
02-05 11:51:01.889:E/AndroidRuntime(379):在android.support.v4.app.BackStackRecord.committelowingstateloss(BackStackRecord.java:578)
02-05 11:51:01.889:E/AndroidRuntime(379):位于com.app.main.AppMainTabActivity.pushFragments(AppMainTabActivity.java:650)
02-05 11:51:01.889:E/AndroidRuntime(379):在com.app.home.home$ExpandableListAdapter$1.onClick(home.java:530)
02-05 11:51:01.889:E/AndroidRuntime(379):在android.view.view.performClick(view.java:2408)
02-05 11:51:01.889:E/AndroidRuntime(379):在android.view.view$PerformClick.run(view.java:8816)
02-05 11:51:01.889:E/AndroidRuntime(379):位于android.os.Handler.handleCallback(Handler.java:587)
02-05 11:51:01.889:E/AndroidRuntime(379):位于android.os.Handler.dispatchMessage(Handler.java:92)
02-05 11:51:01.889:E/AndroidRuntime(379):在android.os.Looper.loop(Looper.java:123)上
02-05 11:51:01.889:E/AndroidRuntime(379):位于android.app.ActivityThread.main(ActivityThread.java:4627)
02-05 11:51:01.889:E/AndroidRuntime(379):位于java.lang.reflect.Method.Invokenactive(本机方法)
02-05 11:51:01.889:E/AndroidRuntime(379):位于java.lang.reflect.Method.invoke(Method.java:521)
02-05 11:51:01.889:E/AndroidRuntime(379):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-05 11:51:01.889:E/AndroidRuntime(379):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-05 11:51:01.889:E/AndroidRuntime(379):在dalvik.system.NativeStart.main(本机方法)
我单击第一个片段中的可展开listview项,它将推送第二个片段。我在BaseExpandableListAdapter中显示错误
AppMainFragmentActivity中的推送和弹出方法
public void pushFragments(String tag, Fragment fragment, boolean shouldAnimate, boolean shouldAdd) {
if (shouldAdd) {
mStacks.get(tag).push(fragment);
}
if (!isFinishing()) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (shouldAnimate)
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
ft.replace(R.id.realtabcontent, fragment);
ft.commit();
}
else {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
if (shouldAnimate)
ft.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_left);
ft.replace(R.id.realtabcontent, fragment);
ft.addToBackStack(null);
ft.commitAllowingStateLoss();//error shows here also.
}
}
public void popFragments() {
/*if (!isFinishing()) { }*/
Fragment fragment = mStacks.get(mCurrentTab).elementAt(mStacks.get(mCurrentTab).size() - 2);
/*pop current fragment from stack.. */
mStacks.get(mCurrentTab).pop();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction ft = manager.beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);
ft.replace(R.id.realtabcontent, fragment);
ft.commit();
}
主片段
public class Firstfragment extends BaseFragment
{
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
private void setupActionBar() {
// TODO Auto-generated method stub
actionBar = getSherlockActivity().getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
View cView = getSherlockActivity().getLayoutInflater().inflate(R.layout.actionbarbutton, null);
final TextView cTitletext = (TextView) cView.findViewById(R.id.action_title_home);
final ImageButton cSection_Menu = (ImageButton) cView.findViewById(R.id.imgbtn_1);
actionBar.setCustomView(cView);
cSection_Menu.setImageResource(R.drawable.section);
cSection_Menu.setVisibility(View.VISIBLE);
cTitletext.setVisibility(View.VISIBLE);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.home_newspaper_list, container,false);
lv = (ExpandableListView) view.findViewById(R.id.newspapers_expandable);
setHasOptionsMenu(true);
return view;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
flag = true;
outState.putBoolean("flag", flag);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public void onPause() {
super.onPause();
flag = true;
AppConstants.isFromHomeDetailView = false;
index = lv.getFirstVisiblePosition();
}
@Override
public void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
@Override
public void onResume() {
super.onResume();
lv.setSelectionFromTop(index, 0);
System.out.println(" onResume Started > "+flag);
setupActionBar();
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
HashMap<String, ArrayList<HashMap<String,String>>> nlist = ma.newspaper_list;
ArrayList<String> languagelist = ma.languagelist;
expListAdapter = new ExpandableListAdapter(getActivity(), languagelist, nlist);
lv.setAdapter(expListAdapter);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return false;
}
public class ExpandableListAdapter extends BaseExpandableListAdapter
{
/* methods for BaseExpandableListAdapterlike getchildcount() etc. */
@Override
public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
View view = null;
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(final View v) {
secondfragment nl = new secondfragment ();
mActivity.pushFragments(AppConstants.TAB_A,nl,true, true);//****error on that line after resuming activity**.**
}
});
return view;
}
}
}
public类Firstfragment扩展了BaseFragment
{
@凌驾
公共事务主任(活动){
超级转速计(活动);
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
私有void setupActionBar(){
//TODO自动生成的方法存根
actionBar=getSherlockActivity().getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(false);
actionBar.setDisplayShowCustomEnabled(true);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
View cView=getSherlockActivity().GetLayoutFlater().inflate(R.layout.actionbarbutton,null);
最终文本视图cTitletext=(文本视图)cView.findViewById(R.id.action\u title\u home);
最终图像按钮C分区菜单=(图像按钮)cView.findViewById(R.id.imgbtn_1);
actionBar.setCustomView(cView);
cSection_Menu.setImageResource(R.drawable.section);
cSection_Menu.setVisibility(视图可见);
cTitletext.setVisibility(View.VISIBLE);
}
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.home\u-paper\u-list,container,false);
lv=(ExpandableListView)view.findViewById(R.id.papers\u expandable);
设置选项菜单(真);
返回视图;
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
flag=true;
outState.putBoolean(“标志”,标志);
}
@凌驾
创建选项菜单(菜单菜单,菜单充气机){
super.onCreateOptions菜单(菜单,充气机);
}
@凌驾
公共无效暂停(){
super.onPause();
flag=true;
AppConstants.isFromHomeDetailView=false;
index=lv.getFirstVisiblePosition();
}
@凌驾
公共void onStop(){
//TODO自动生成的方法存根
super.onStop();
}
@凌驾
恢复时公开作废(){
super.onResume();
lv.setSelectionFromTop(索引,0);
System.out.println(“onResume start>”+标志);
setupActionBar();
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
HashMap nlist=ma.paper\u list;
ArrayList languagelist=ma.languagelist;
expListAdapter=新的ExpandableListAdapter(getActivity(),languagelist,NLList);
lv.setAdapter(expListAdapter);
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
返回false;
}
公共类ExpandableListAdapter扩展了BaseExpandableListAdapter
{
/*BaseExpandableListAdapterlike getchildcount()等的方法*/
@凌驾
公共视图getChildView(最终整数组位置、最终整数子位置、布尔isLastChild、视图转换视图、视图组父级){
视图=空;
view.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(最终视图v){
secondfragment nl=新的secondfragment();
MacActivity.pushFragments(AppConstants.TAB_A,nl,true,true);//****恢复活动后该行出现错误****
}
});
返回视图;
}
}
}
看起来像你