Java.lang.IllegalStateException: Sin actividad

Estoy creando una aplicación de Android para la que deseo que mi primera actividad esté compuesta de 2 pestañas, una para el perfil del usuario y otra para la actividad de los amigos. Para estas pestañas, he optado por un TabHost ya que mi barra de acción de Sherlock ya está usando la navegación de lista para pasar a otras actividades por lo que no puedo utilizar la pestaña de navegación desde la barra de acción.

La aplicación funcionó durante un tiempo, pero ahora sólo una de mis pestañas funciona, tan pronto como intento pasar a la segunda pestaña, estoy recibiendo una java.lang.IllegalStateException: No activity

He añadido la salida de Logcat para este error, aunque no estoy seguro de que ayuda ya que no hay rastro de nuevo a mi código.

He intentado reemplazar el TabHost con un FragmentTabHost, pero el error persiste …

¿Puede alguien amablemente me señala el origen / significado de este error? Gracias por adelantado !

LOGCAT:

04-03 08:19:39.380: W/dalvikvm(958): threadid=1: thread exiting with uncaught exception (group=0x40a71930) 04-03 08:19:39.400: E/AndroidRuntime(958): FATAL EXCEPTION: main 04-03 08:19:39.400: E/AndroidRuntime(958): java.lang.IllegalStateException: No activity 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1075) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1861) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1474) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.os.Handler.handleCallback(Handler.java:725) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.os.Handler.dispatchMessage(Handler.java:92) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.os.Looper.loop(Looper.java:137) 04-03 08:19:39.400: E/AndroidRuntime(958): at android.app.ActivityThread.main(ActivityThread.java:5041) 04-03 08:19:39.400: E/AndroidRuntime(958): at java.lang.reflect.Method.invokeNative(Native Method) 04-03 08:19:39.400: E/AndroidRuntime(958): at java.lang.reflect.Method.invoke(Method.java:511) 04-03 08:19:39.400: E/AndroidRuntime(958): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 04-03 08:19:39.400: E/AndroidRuntime(958): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 04-03 08:19:39.400: E/AndroidRuntime(958): at dalvik.system.NativeStart.main(Native Method) 

ACTIVIDAD

 public class HomeActivity extends SherlockFragmentActivity implements ActionBar.OnNavigationListener { private ActionBar mActionBar; private TabHost tHost; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home_activity_layout); //Setting the list navigation on actionBar mActionBar = getSupportActionBar(); Context context = getSupportActionBar().getThemedContext(); ArrayAdapter<CharSequence> list = ArrayAdapter.createFromResource(context, R.array.list_menu_items, R.layout.sherlock_spinner_item); list.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item); mActionBar.setDisplayShowTitleEnabled(false); mActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); mActionBar.setListNavigationCallbacks(list, this); //Setting the subnavigation with TabHost tHost = (TabHost) findViewById(android.R.id.tabhost); tHost.setup(); /** Defining tab builder for profile tab */ TabHost.TabSpec tabSpecProfile = tHost.newTabSpec("profile"); tabSpecProfile.setIndicator("PROFILE"); tabSpecProfile.setContent(new TabContentMaker(this)); tHost.addTab(tabSpecProfile); /** Defining tab builder for community tab */ TabHost.TabSpec tabSpecCommunity = tHost.newTabSpec("community"); tabSpecCommunity.setIndicator("COMMUNITY"); tabSpecCommunity.setContent(new TabContentMaker(this)); tHost.addTab(tabSpecCommunity); /** Defining Tab Change Listener event. This is invoked when tab is changed */ TabHost.OnTabChangeListener tabChangeListener = getOnTabChangeListener(); /** Setting tabchangelistener for the tab */ tHost.setOnTabChangedListener(tabChangeListener); } @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { //changing activity here return true; } private TabHost.OnTabChangeListener getOnTabChangeListener(){ TabHost.OnTabChangeListener tabChangeListener = new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String tabId) { android.support.v4.app.FragmentManager fm = getSupportFragmentManager(); MyProfileFragment profileFragment = (MyProfileFragment) fm.findFragmentByTag("profile"); CommunityFeedFragment communityFragment = (CommunityFeedFragment) fm.findFragmentByTag("community"); android.support.v4.app.FragmentTransaction ft = fm.beginTransaction(); /** Detaches the profileFragment if exists */ if(profileFragment!=null) ft.detach(profileFragment); /** Detaches the communityFragment if exists */ if(communityFragment!=null) ft.detach(communityFragment); /** If current tab is profile */ if(tabId.equalsIgnoreCase("profile")){ if(profileFragment==null){ /** Create MyProfileFragment and adding to fragmenttransaction */ ft.add(R.id.realtabcontent,new MyProfileFragment(), "profile"); }else{ /** Bring to the front, if already exists in the fragmenttransaction */ ft.attach(profileFragment); } }else{ /** If current tab is community */ if(communityFragment==null){ /** Create CommunityFragment and adding to fragmenttransaction */ ft.add(R.id.realtabcontent,new CommunityFeedFragment(), "community"); }else{ /** Bring to the front, if already exists in the fragmenttransaction */ ft.attach(communityFragment); } } ft.commit(); } }; return tabChangeListener; } 

ANDROIDE MANIFEST

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.enlavertical" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Styled" > <activity android:name="com.enlavertical.HomeActivity" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 

Finalmente descubrí de qué se trataba: el "no activity" crash se debió al hecho de que estaba usando un FragmentManager incorrecto para anidar Fragmentos.

Para fragmentos anidados, el único FragmentManager válido es el obtenido en el fragmento que contiene, llamando a getChildFragmentManager() .

Tengo este error también. Finalmente, descubrí que estaba anulando los métodos onResume () onStop () incorrectamente

 @Override protected void onResume() { super.onResume(); initilizeMap(); } @Override protected void onStop() { super.onResume(); finish(); } 

Se ha cambiado a

  @Override protected void onResume() { super.onResume(); initilizeMap(); } @Override protected void onStop() { super.onStop(); finish(); } 

Así tonto error: P

Necesita que la transacción que se va a realizar después del estado de una actividad se guarde …

Utilice ft.commitAllowingStateLoss() lugar de ft.commit()

Eso resolverá su problema.

Fuente

Estaba creando un fragmento en myActivity.onCreate() llamando a:

 getSupportFragmentManager() .beginTransaction() .remove(frag) .replace(idOfViewBeingReplaced, frag) .commit(); 

Mientras veía mi aplicación me golpeó el botón de encendido y, a continuación, la aplicación se bloquea. Aparentemente, cuando el dispositivo está apagado, los estados de actividad y fragmento se guardan, se desconectan y luego onCreate() y onCreateView() se llaman en los fragmentos. En este estado, .remove(frag) no se puede llamar o bien lanzará:

Estado ilegal: sin actividad

Por lo tanto, acabo de eliminar .remove(frag) y todo está funcionando de nuevo.

  • Texto en la parte superior del diseño de host de la pestaña Android
  • Actualizar pestañas de la actividad de una pestaña en un TabHost de Android
  • ¿Cómo puedo diseñar las pestañas de Android para obtener un aspecto 3D?
  • Cambiar el texto en una pestaña de Android
  • Android: pestañas en la parte inferior con FragmentTabHost
  • Comprender la actividad setContentView
  • Android: NPE en TabSpec setContent (Ver)
  • Crear tabhost personalizado como en el navegador de cromo para Android
  • FragmentTabHost no crea vista dentro de Fragmento en android
  • Android Tabhost Problema - .setIndicator
  • Cómo cambiar las pestañas programatically en android de fragmento?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.