繁体   English   中英

Android-未找到嵌套片段

[英]Android - Nesting Fragments No View Found

我有三个片段,它们的排列如下所示:

“片段A和片段C未连接,但是片段B和C连接在一起。每个片段包含1个列表视图,因此,每次触发事件时,它将转到下一个片段。”

片段A --->(内部片段A )片段B --->(内部片段B )片段C

  • 片段A(main.xml)
  • 片段B(R.id.contentFragment)
  • 片段C(R.id.contentFragment)

我可以显示Fragment A和Fragment B, 但是可以, 但是如果我从B调用Fragment C,则会收到"No view found in contentFragment=0x7f040039"

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"  
                android:background="@color/white" 
                android:id="@+id/frameLayout"    
                >

            <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content" 
            >
            </ListView>

    <FrameLayout 
    android:id="@+id/contentFragment"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" >
     </FrameLayout>


    </FrameLayout>

</FrameLayout>

FragmentA.java

在片段A内以打开片段B

 Fragment fragment1 = new FragmentB();

        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
        transaction.replace(R.id.contentFragment, fragment1, fragMainGroups );
        transaction.addToBackStack(fragMainGroups);
        transaction.commit(); 

FragmentB.java

在片段B内以打开片段C

     String fragGroups = "groups";

    Fragment fragment1 = new FragmentC();

    FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
    transaction.replace(R.id.contentFragment, fragment1, fragGroups );
    transaction.addToBackStack(fragGroups);
    transaction.commit(); 

片段C.java

片段C内部

   public class FragmentItems extends ListFragment{

    public void onAttach(Activity activity) {
        super.onAttach(activity);
    }
            public void onActivityCreated(Bundle savedInstanceState) {
                super.onActivityCreated(savedInstanceState);
            }

            public void onCreate(Bundle e)
            {
                super.onCreate(e);
            }

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                        Bundle savedInstanceState) {
                    View rootView = inflater.inflate(R.layout.load_items_activity, container, false);

                    return rootView;
                }
}

Logcat

07-25 18:10:20.388: E/FragmentManager(24703): No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups}
07-25 18:10:20.388: E/FragmentManager(24703): Activity state:

07-25 18:10:20.388: E/FragmentManager(24703): No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups}
07-25 18:10:20.388: E/FragmentManager(24703): Activity state:
07-25 18:10:20.718: E/AndroidRuntime(24703): FATAL EXCEPTION: main
07-25 18:10:20.718: E/AndroidRuntime(24703): java.lang.IllegalArgumentException: No view found for id 0x7f040039 (com.jinisys.restoplusordering:id/contentFragment) for fragment FragmentItems{4156f480 #0 id=0x7f040039 groups}
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:903)
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:429)
07-25 18:10:20.718: E/AndroidRuntime(24703):    at android.os.Handler.handleCallback(Handler.java:615)

由于错误状态,您正在寻找一个在片段B内具有id contentFragmentTtems视图,其主视图是contentFragment而不是整个main.xml 因此,如果要添加新片段,也应从片段A中进行操作。

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:orientation="vertical"  
                android:background="@color/white" 
                android:id="@+id/frameLayout"    
                >

            <ListView
            android:id="@android:id/list"
            android:layout_width="fill_parent"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:layout_height="wrap_content" 
            >
            </ListView>

    <FrameLayout 
    android:id="@+id/contentFragmentb"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" >
     </FrameLayout>
<FrameLayout 
    android:id="@+id/contentFragmentc"
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_weight="1" >
     </FrameLayout>

    </FrameLayout>

</FrameLayout>

这应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM