簡體   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