繁体   English   中英

在xml布局中为View元素重用ID字符串

[英]Reusing ID string for View elements in xml layout

我有一个具有掌上电脑layout.xml和平板电脑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>

为了使事情保持简单,可以说此layout.xml在res / layout和res / layout-large中是相同的。

在我的主要活动中,我像这样引用此片段:

final myFrag = (MyFrag) getSupportFragmentManager().findFragmentById(R.id.myFrag);

这在平板电脑上正常工作,但是当我尝试在手持设备上运行时,myFrag为空。 玩了一会儿之后,我发现如果我将掌上电脑layout.xml中的名称更改为myFrag2并搜索该名称,它将起作用。 令我困惑的是,根据Android文档,我应该能够重用此ID:

http://developer.android.com/guide/topics/ui/declaring-layout.html#id

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

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

事实证明这是毫无疑问的。 我无法确切地说出原因,但似乎R没有得到正确的重新生成。 我消灭了它并对其进行了重新生成,整个世界一切都很好,所以看起来好像没有什么特别的事情发生。

暂无
暂无

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

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