2014-02-18 54 views
1

我試圖做到這一點在庫項目...如何以編程方式獲取android.R.id.content的資源ID?

int containerViewId = getResources().getIdentifier("content", "android.R.id", getPackageName()); 

getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit(); 

,但我得到這個例外替換: 產生的原因:java.lang.IllegalArgumentException異常:必須使用非零containerViewId

如何以編程方式獲取android.R.id.content的資源ID?

謝謝。

編輯: 我以一個名爲視圖,設置在活動的XML佈局的ID,並使用下面的代碼替換根視圖解決它......

int containerViewId = getResources().getIdentifier("rootView", "id", getPackageName()); 
getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit(); 
+0

我可以通過編程方式訪問大多數所有資源名稱。這不是問題。這是返回零的特定資源ID(android.R.id.content)。我想知道以編程方式獲取根內容視圖(android.R.id.content)以通過片段管理器替換它的正確方法。 – CaptAmericode

回答

-1

我以一個命名視圖解決它,設置id中的XML結構活動並使用以下代碼來替換根視圖...

int containerViewId = getResources().getIdentifier("rootView", "id", getPackageName()); 
getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit(); 
1
int containerViewId = findViewById(android.R.id.content) 

應該可以工作。儘管如此,你必須確保你使用了Activity的上下文。您也可以使用 Activity.getWindow()。getDecorView() 來獲取頂視圖。

+0

這兩個建議都會返回一個View,但是我需要該視圖的資源ID。 – CaptAmericode

+0

android.R.id.content是視圖的ID。如果它返回零,你確定你試圖從Activity上下文或片段中獲取? –

+1

它來自Activity上下文,但是它來自嵌入式庫項目。我認爲這就是爲什麼它返回零。資源被合併。我決定不使用android.R.id.content,只是簡單地通過設置id來替換我的佈局的根視圖。 – CaptAmericode

0
int containerViewId = view.getId(); 

然後使用ID,只要你想,但你只需要得到視圖參數,或從別的地方得到

相關問題