gpt4 book ai didi

android - 旋转后找不到 fragment 的 id 0x View ?

转载 作者:太空狗 更新时间:2023-10-29 15:53:57 25 4
gpt4 key购买 nike

我正在将一些 fragment 加载到一个容器中,该容器也包含一个抽屉导航。旋转屏幕,然后再旋转回来时,应用程序崩溃:

java.lang.RuntimeException: Unable to start activity ComponentInfo{lu.gian.uniwhere.alfa/com.example.alfa.ActivityHome}: java.lang.IllegalArgumentException: No view found for id 0x7f0b004e (com.example.alfa:id/taxes_pager) for fragment FragmentTaxToBePaid{b5969898 #2 id=0x7f0b004e}

我在横向后旋转回到纵向模式时遇到此错误。有趣的是我没有加载 FragmentTaxes (即,N.B.。一个 ViewPager ),但完全是另一个 fragment (FragmentOverwiew - 没有什么特别要注意的)!

从 FragmentSession 返回时抛出完全相同的错误,即 ViewPager持有人也是:

java.lang.RuntimeException: Unable to start activity ComponentInfo{lu.gian.uniwhere.alfa/com.example.alfa.ActivityHome}: java.lang.IllegalArgumentException: No view found for id 0x7f0b000f (com.example.alfa:id/session_pager) for fragment FragmentSessionApplied{b5afa300 #1 id=0x7f0b000f}

我已经尝试了一切(不保留 fragment 的实例,将它们放在后台堆栈中,将 Frame xml 标记替换为 FrameLayout ,然后为横向创建特定布局模式等),但几乎没有任何效果。我认为这是由于 fragment 生命周期,因为崩溃是不稳定的并且难以调试,但很难理解如何解决此类问题。

Activity 首页

public void selectItem(int position) {
// ...
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.addToBackStack(null)
.replace(R.id.content_frame, fragment)
.commit();
mDrawerList.setItemChecked(position, true);
setTitle(mDrawerTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}

activity_home

<android.support.v4.widget.DrawerLayout
... >

<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />


<!-- The navigation drawer .... -->

</android.support.v4.widget.DrawerLayout>

fragment 税

    View rootView = inflater.inflate(R.layout.fragment_taxes, container, false);

fragment 税

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
... >

<!-- Loader -->
<include
android:id="@+id/taxes_main_progress"
layout="@layout/indeterminate_activity_bar" />

<android.support.v4.view.ViewPager
android:visibility="gone"
android:id="@+id/taxes_pager"
... >

<android.support.v4.view.PagerTabStrip
android:id="@+id/taxes_pager_tab_strip"
... />
</android.support.v4.view.ViewPager>

</RelativeLayout>

如果需要,我会发布更多代码 fragment 。现在我不这样做了,我认为这会导致阅读困惑。

最佳答案

这一切都归功于 setRetainInstance(true)。我认为在两个 ViewPagers 中将其设置为 false 就足够了。实际上不是。我将它从单个(嵌套) fragment 中删除,一切顺利。

看起来嵌套 fragment 无法处理 setRetainInstance。从这里得到它:ViewPager with one page containing multiple Fragments "java.lang.IllegalArgumentException: No view found for id"

关于android - 旋转后找不到 fragment 的 id 0x View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18230752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com