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
- Buscar usuarios en el host de pestañas android
- Integre tabhost y el cajón de navegación
- Fragmento superpuesto
- Android OnResume no se llama cuando se usa TabHost y LocalActivityManager
- Android L Previsualizar el material denominado Tabs
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>
- Especificaciones de Honeycomb y TabHost
- Cualquier método alternativo para Casting de clase
- Android usando viewPager vs usando tabhost
- Error de sintaxis, inserte ";" para completar Declaración en Android?
- TabHost con Fragmentos y FragmentActivity
- ¿Cómo cambiar o cambiar entre las pestañas en la distribución gráfica sdk de Android?
- StateListDrawable para cambiar filtros de color
- ¿Cómo implementar pestañas desplazables horizontalmente?
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.
- ¿Cuál es la diferencia entre setFocusable y setFocusableInTouchMode?
- Native Android VPN de forma programática