我有一个片段,我试图添加到一个视图。

FragmentManager fragMgr=getSupportFragmentManager();
feed_parser_activity content = (feed_parser_activity)fragMgr
                                    .findFragmentById(R.id.feedContentContainer);
FragmentTransaction xaction=fragMgr.beginTransaction();

if (content == null || content.isRemoving()) {
    content=new feed_parser_activity(item.getLink().toString());
    xaction
        .add(R.id.feedContentContainer, content)
        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
        .addToBackStack(null)
        .commit();
    Log.e("Abstract", "DONE");
}

当这段代码执行时,我在调试中得到以下错误。

java.lang.IllegalArgumentException: No view found for id 0x7f080011 
   for fragment feed_parser_activity{41882f50 #2 id=0x7f080011}

feed_parser_activity是一个片段,在xml中被设置为片段布局。 我使用FragmentActivity来托管持有feed_parser_layout的片段布局。 我上面写的对吗?


当前回答

我有这个问题(在代码中构建我的UI),这是由我的ViewPager(显示片段)没有ID设置造成的,所以我简单地使用了page . setid (ID),然后它就工作了。

这篇文章帮我找到了答案。

其他回答

有时是因为你在使用一个BottomNavigationView。如果你从导航中打开Intent,在那个活动中打开一个片段

transaction.replace(R.id.container,new YourFragment());

那么Activity将无法找到你正在使用的导航方法。

解决方案:将活动更改为片段,并在应用程序中使用addOnBackStack处理导航。如果你已经实现了Jetpack导航,只需在项目中使用片段。

我遇到过的另一种情况。 如果你使用嵌套片段,比如一个片段中的ViewPager,它的页面也是片段。

当你在内部片段(ViewPager的页面)中进行Fragment事务处理时,你将需要

FragmentManager fragmentManager = getActivity().getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();

getActivity()是这里的键。 ...

对我来说。我有一个活动与几个片段 有时候我需要重新创建碎片的时候 语言就是变化 片段布局有的需要有的不需要或者内容变更需要重新创建 其他的变化

我清除所有的片段,并设置所有为空的活动 但是Fragment已经创建了自己,当它承载活动时 是bean集空,所以之前调用片段视图 检查为空

例如

Activity{
    fragment
    recreate{
       fragment = null then new instance
    }

}

Fragment{
    if((activity).fragment != null) {
       findViewById()
    }

}

如果您传递给FragmentTransaction的布局ID也会发生此异常。replace(int ID, fragment)存在于其他正在膨胀的布局中。确保布局ID是唯一的,它应该工作。

我从com.android.support:support-v4:21.0.0升级到com.android.support:support-v4:22.1.1时遇到了这个错误。

我不得不改变我的布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/container_frame_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
</FrameLayout> 

:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

</FrameLayout> 

所以布局必须有一个子视图。我猜他们在新图书馆里强制这么做了。