IllegalStateException:没有活动FragmentManager.java [英] IllegalStateException: No activity FragmentManager.java

查看:106
本文介绍了IllegalStateException:没有活动FragmentManager.java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我当时使用Eclipse来编译应用程序,我曾经遇到此错误,但并没有很多.但是由于我已经切换到android studio,所以我经常遇到这种崩溃.它几乎使每台设备崩溃.我已尝试做所有事情,但似乎无法解决此问题.我试过同时使用getfragmentManager()和getSupportFragmentManager(),两者都崩溃了.不确定现在该怎么办?

I was using Eclipse to compile the app, I used to get this error but not a lot. But since I've switch to android studio, I'm getting this crash a lot. Its crashing pretty much every device. I've tried doing everything but can't seem to fix this issue. I've tried using both getfragmentManager() and getSupportFragmentManager(), getting this crash in both. Not sure what to do now?

下面是我用来切换片段的代码.

Below is the code I'm using to switch fragments.

private void showFragment(Fragment fragment){
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
if (!fragment.isAdded()) {
        fragmentTransaction.replace(R.id.home_frame, fragment).commitAllowingStateLoss();
        currentFragment = fragment;
    }
}

我的所有片段都扩展了具有以下代码的基本片段

And all my fragments extends a base fragment which has the following code

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

}

请帮忙.我在商店里碰到了很多车祸和不良评论.

Please help out. I'm getting tonnes of crashes and bad reviews on the store.

下面是我的堆栈跟踪

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$1.run(FragmentManager.java:447)

推荐答案

好吧,我在找不到修复程序的地方进行了搜索. 但是进行以下两个更改后,我得以解决该问题.

Okay I searched everywhere I couldn't find the fix. But making the following two changes I was able to fix the problem.

首先,我没有在每次传递getChildFragmentManager()作为参数的情况下,而是在应用程序类中创建了一个对象并使用了该对象.

First, instead of passing the getChildFragmentManager() every time as an argument, I created an object in the application class and used that.

第二,显然我在同一片段中两次使用了getChildFragmentManager(),即我有两个嵌套片段.我删除了一个.

Second, Apparently I was using getChildFragmentManager() twice in the same fragment ie I had two nested fragments. I removed one.

这篇关于IllegalStateException:没有活动FragmentManager.java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆