Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将FrameLayout强制转换为片段_Java_Android_Android Layout_Android Fragments - Fatal编程技术网

Java 将FrameLayout强制转换为片段

Java 将FrameLayout强制转换为片段,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我最近试图理解一个关于片段的故事。为此,具体而言: DetailsFragment details = (DetailsFragment)getFragmentManager().findFragmentById(R.id.details); 在哪里 详情如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal"

我最近试图理解一个关于片段的故事。为此,具体而言:

DetailsFragment details = (DetailsFragment)getFragmentManager().findFragmentById(R.id.details);
在哪里

详情如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <fragment class="com.example.android.apis.app.FragmentLayout$TitlesFragment"
            android:id="@+id/titles" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="match_parent" />

    <FrameLayout android:id="@+id/details" android:layout_weight="1"
            android:layout_width="0px" android:layout_height="match_parent"
            android:background="?android:attr/detailsElementBackground" />

</LinearLayout>


我的问题是,为什么方法
findFragmentById
接收参数
FrameLayout
会以类似类型转换的方式返回
Fragment
的对象?但是,
FrameLayout
扩展了
ViewGroup
Fragment
扩展了
java.lang.Object
,它们不共享一个公共的超类。

您可以使用另一种方法来查找这样的片段

Fragment fragment = getSupportFragmentManager().findFragmentByTag(DetailsFragment .getClass().getName());

if (fragment != null && fragment instanceof DetailsFragment ) {
    //fragment to call DetailsFragment's method
}
Fragment fragment = getSupportFragmentManager().findFragmentByTag(DetailsFragment .getClass().getName());

if (fragment != null && fragment instanceof DetailsFragment ) {
    //fragment to call DetailsFragment's method
}