„java.lang.IllegalStateException: Aktivität wurde zerstört“ nach Wiederaufnahme der FragmentActivity auf AndroidAndroid

Forum für diejenigen, die für Android programmieren
Anonymous
 „java.lang.IllegalStateException: Aktivität wurde zerstört“ nach Wiederaufnahme der FragmentActivity auf Android

Post by Anonymous »

Ich verwende diesen Ansatz: Separater Backstack für jede Registerkarte in Android mithilfe von Fragmenten

Ich versuche, das Fragment vom ersten Fragment zu verschieben. Nach dem Fortsetzen der FragmentActivity verursacht diese Aktion den Fehler „Aktivität wurde zerstört“. Wenn ich das Fragment zum ersten Mal pushe, funktioniert es einwandfrei, aber wenn ich diese FragmentActivity anhalte (Anwendung minimiere), sie erneut öffne und dann versuche, das Fragment zu pushen, wird der Fehler angezeigt. Ich weiß, dass diese Frage schon oft gestellt wird, aber ich konnte daraus keine Lösung finden.

Fehler

Code: Select all

02-05 11:51:01.889: E/AndroidRuntime(379): FATAL EXCEPTION: main
02-05 11:51:01.889: E/AndroidRuntime(379): java.lang.IllegalStateException: Activity has been destroyed
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1365)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.support.v4.app.BackStackRecord.commitAllowingStateLoss(BackStackRecord.java:578)
02-05 11:51:01.889: E/AndroidRuntime(379):     at com.app.main.AppMainTabActivity.pushFragments(AppMainTabActivity.java:650)
02-05 11:51:01.889: E/AndroidRuntime(379):     at com.app.home.Home$ExpandableListAdapter$1.onClick(Home.java:530)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.view.View.performClick(View.java:2408)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.view.View$PerformClick.run(View.java:8816)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.os.Handler.handleCallback(Handler.java:587)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.os.Handler.dispatchMessage(Handler.java:92)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.os.Looper.loop(Looper.java:123)
02-05 11:51:01.889: E/AndroidRuntime(379):     at android.app.ActivityThread.main(ActivityThread.java:4627)
02-05 11:51:01.889: E/AndroidRuntime(379):     at java.lang.reflect.Method.invokeNative(Native Method)
02-05 11:51:01.889: E/AndroidRuntime(379):     at java.lang.reflect.Method.invoke(Method.java:521)
02-05 11:51:01.889: E/AndroidRuntime(379):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-05 11:51:01.889: E/AndroidRuntime(379):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-05 11:51:01.889: E/AndroidRuntime(379):     at dalvik.system.NativeStart.main(Native Method)
Ich klicke im ersten Fragment auf ein erweiterbares Listenansichtselement, das das zweite Fragment verschiebt. Ich zeige den Fehler in BaseExpandableListAdapter.

Push- und Pop-Methode in AppMainFragmentActivity

Code: Select all

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

Code: Select all

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 nlist = ma.newspaper_list;
ArrayList 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;
}
}

}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post