2014-02-18 118 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,只要你想,但你只需要得到视图参数,或从别的地方得到

相关问题