Android 碎片不会再次打开

Android 碎片不会再次打开,android,android-fragments,Android,Android Fragments,我有一个导航抽屉,上面有菜单主页、设置、关于我们等。只有HOME才有刷卡标签。在应用程序开始时,Home被打开,但之后每当我再次单击Home时,它会显示错误,表示Home片段未连接到Activity 我的代码如下 Drawer.java 这是主要的 代码在第72行 myActionBar.setNavigationMode(ActionBar.NAVIGATION\u MODE\u选项卡) 代码在第114行 int tabId=getActivity().getResources().getId

我有一个导航抽屉,上面有菜单主页、设置、关于我们等。只有HOME才有刷卡标签。在应用程序开始时,Home被打开,但之后每当我再次单击Home时,它会显示错误,表示Home片段未连接到Activity

我的代码如下

Drawer.java 这是主要的

代码在第72行

myActionBar.setNavigationMode(ActionBar.NAVIGATION\u MODE\u选项卡)

代码在第114行

int tabId=getActivity().getResources().getIdentifier(名称,“drawable”,getActivity().getPackageName())


不太清楚,看不到完整的活动代码,但当片段代码运行时,您的活动可能仍在执行某些(后台)过程或其他操作。尝试将代码移动到片段生命周期中的
onActivityCreated()
,此时片段已附加到活动。还可以检查代码中是否已经添加了片段,如

if(!isAdded()) {
    return;
}

通过此方法删除当前片段可能会解决您的问题

public void removeFragment(Fragment fragment) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.remove(fragment);
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.commit();
}

我在OnActivityCreated中编写了代码,但仍然存在相同的问题。但在同一行中仍然显示相同的错误。我想知道为什么在myActionBar.setNavigationMode(ActionBar.NAVIGATION\u MODE\u选项卡)中显示错误;我应该在哪里使用isAdded代码?我在Drawer.java中使用了它,但Odest Work通过避免getResource().getIdentifier()行解决了这个问题。我不知道为什么它会引起问题。你能提供一些这方面的信息吗?
05-29 14:44:31.961  12034-12034/com.example.p6.bloodies E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.IllegalStateException: Fragment Home{4120fd50} not attached to Activity
        at android.support.v4.app.Fragment.getResources(Fragment.java:619)
        at com.example.p6.bloodies.Home.onTabSelected(Home.java:114)
        at android.support.v7.internal.app.WindowDecorActionBar.selectTab(WindowDecorActionBar.java:634)
        at android.support.v7.internal.app.WindowDecorActionBar.setSelectedNavigationItem(WindowDecorActionBar.java:414)
        at android.support.v7.internal.app.WindowDecorActionBar.setNavigationMode(WindowDecorActionBar.java:1297)
        at com.example.p6.bloodies.Home.onCreateView(Home.java:72)
        at android.support.v4.app.Fragment.performCreateView(Fragment.java:1786)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947)
        at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
        at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:739)
        at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489)
        at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:454)
        at android.os.Handler.handleCallback(Handler.java:605)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:817)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584)
        at dalvik.system.NativeStart.main(Native Method)
if(!isAdded()) {
    return;
}
public void removeFragment(Fragment fragment) {
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.remove(fragment);
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
    transaction.commit();
}