非法状态异常:否 activity FragmentManager.java
IllegalStateException: No activity FragmentManager.java
我正在使用 Eclipse 编译应用程序,我曾经遇到过这个错误,但不是很多。但是自从我切换到 android studio 后,我经常遇到这种崩溃。几乎每台设备都会崩溃。我已尝试做所有事情,但似乎无法解决此问题。我试过同时使用 getfragmentManager() 和 getSupportFragmentManager(),但两者都发生了崩溃。不确定现在该做什么?
下面是我用来切换片段的代码。
private void showFragment(Fragment fragment){
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
if (!fragment.isAdded()) {
fragmentTransaction.replace(R.id.home_frame, fragment).commitAllowingStateLoss();
currentFragment = fragment;
}
}
我所有的片段都扩展了一个基本片段,该片段具有以下代码
private static final Field sChildFragmentManagerField;
static {
Field f = null;
try {
f = Fragment.class.getDeclaredField("mChildFragmentManager");
f.setAccessible(true);
} catch (NoSuchFieldException e) {
Log.wtf("LOGTAG", "Error getting mChildFragmentManager field", e);
}
sChildFragmentManagerField = f;
}
@Override
public void onDetach() {
super.onDetach();
if (sChildFragmentManagerField != null) {
try {
sChildFragmentManagerField.set(this, null);
} catch (Exception e) {
Log.e("LOGTAG", "Error setting mChildFragmentManager field", e);
}
}
}
请帮忙。我在商店中收到大量崩溃和差评。
下面是我的堆栈跟踪
Fatal Exception: java.lang.IllegalStateException: No activity
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1054)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1049)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1871)
at android.app.Fragment.performActivityCreated(Fragment.java:2067)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:912)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.app.BackStackRecord.run(BackStackRecord.java:833)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1454)
at android.app.FragmentManagerImpl.run(FragmentManager.java:447)
好吧,我到处搜索都找不到修复程序。
但是进行以下两个更改我能够解决问题。
首先,我没有每次都将 getChildFragmentManager() 作为参数传递,而是在应用程序 class 中创建了一个对象并使用了它。
其次,显然我在同一个片段中使用了 getChildFragmentManager() 两次,即我有两个嵌套的片段。我删除了一个。
我正在使用 Eclipse 编译应用程序,我曾经遇到过这个错误,但不是很多。但是自从我切换到 android studio 后,我经常遇到这种崩溃。几乎每台设备都会崩溃。我已尝试做所有事情,但似乎无法解决此问题。我试过同时使用 getfragmentManager() 和 getSupportFragmentManager(),但两者都发生了崩溃。不确定现在该做什么?
下面是我用来切换片段的代码。
private void showFragment(Fragment fragment){
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
if (!fragment.isAdded()) {
fragmentTransaction.replace(R.id.home_frame, fragment).commitAllowingStateLoss();
currentFragment = fragment;
}
}
我所有的片段都扩展了一个基本片段,该片段具有以下代码
private static final Field sChildFragmentManagerField;
static {
Field f = null;
try {
f = Fragment.class.getDeclaredField("mChildFragmentManager");
f.setAccessible(true);
} catch (NoSuchFieldException e) {
Log.wtf("LOGTAG", "Error getting mChildFragmentManager field", e);
}
sChildFragmentManagerField = f;
}
@Override
public void onDetach() {
super.onDetach();
if (sChildFragmentManagerField != null) {
try {
sChildFragmentManagerField.set(this, null);
} catch (Exception e) {
Log.e("LOGTAG", "Error setting mChildFragmentManager field", e);
}
}
}
请帮忙。我在商店中收到大量崩溃和差评。
下面是我的堆栈跟踪
Fatal Exception: java.lang.IllegalStateException: No activity
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1054)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1049)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1871)
at android.app.Fragment.performActivityCreated(Fragment.java:2067)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:912)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
at android.app.BackStackRecord.run(BackStackRecord.java:833)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1454)
at android.app.FragmentManagerImpl.run(FragmentManager.java:447)
好吧,我到处搜索都找不到修复程序。 但是进行以下两个更改我能够解决问题。
首先,我没有每次都将 getChildFragmentManager() 作为参数传递,而是在应用程序 class 中创建了一个对象并使用了它。
其次,显然我在同一个片段中使用了 getChildFragmentManager() 两次,即我有两个嵌套的片段。我删除了一个。