如何以编程方式获取android.R.id.content的资源ID?

时间:2014-02-18 00:15:51

标签: android android-fragments resource-id

我正在尝试在图书馆项目中这样做......

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

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

但是我在替换时得到了这个例外:     引起:java.lang.IllegalArgumentException:必须使用非零容器ViewId

如何以编程方式获取android.R.id.content的资源ID?

感谢。

修改 我通过使用命名视图解决了它,在活动的xml布局中设置id并使用以下代码替换根视图...

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

3 个答案:

答案 0 :(得分:1)

int containerViewId = findViewById(android.R.id.content) 

应该有效。您必须确保使用Activity的上下文。你也可以使用     Activity.getWindow()。getDecorView() 得到顶视图。

答案 1 :(得分:0)

int containerViewId = view.getId();

然后根据需要使用id,但您只需将视图作为参数或从其他地方获取

答案 2 :(得分:0)

我已经通过使用命名视图解决了它,在活动的xml布局中设置了id并使用以下代码替换了根视图...

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