Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.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 在xml布局中重用视图元素的ID字符串_Java_Android - Fatal编程技术网

Java 在xml布局中重用视图元素的ID字符串

Java 在xml布局中重用视图元素的ID字符串,java,android,Java,Android,我有一个应用程序,它有一个掌上layout.xml和一个tablet layout.xml。在layout.xml中,一个片段声明如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="fill_parent"

我有一个应用程序,它有一个掌上layout.xml和一个tablet layout.xml。在layout.xml中,一个片段声明如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:paddingTop="2dp"
              android:paddingBottom="2dp">

<fragment class="com.example.MyFrag"
          android:id="@+id/myFrag"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"/>
</LinearLayout>
final myFrag = (MyFrag) getSupportFragmentManager().findFragmentById(R.id.myFrag);
这对平板电脑来说很好,但当我尝试在掌上电脑上运行时,myFrag是空的。在玩了一会儿之后,我发现如果我将掌上电脑layout.xml中的名称改为myFrag2并搜索该名称,它就会起作用。让我困惑的是,根据Android文档,我应该能够重用这个id:


我做错什么了吗?我真的不想编写代码来测试myFrag是否为null,然后尝试加载掌上电脑的名称…

据我所知,如果您将使用res/layout large,则不能将res/layout默认目录用于布局。因此,如果您将使用屏幕尺寸,那么您应该使用您将考虑的所有(大多数)屏幕尺寸。因此,您需要实现小型、普通的手持设备。
您可以阅读有关屏幕大小的文档

这不是问题。我说不出确切的原因,但似乎R没有得到适当的再生。我清除了它并重新生成了它,整个世界都很好,所以看起来毕竟没有什么特别的事情发生。

我在文档中找不到任何关于这条规则的明确提及。我的假设是,如果我没有为给定的大小提供显式资源,那么它将默认为res/layout中的内容,情况似乎就是这样。我使用了一个简单的例子来说明上面的问题,但是我有很多其他资源没有重叠的片段id,它们似乎没有问题,所以我有点怀疑。