我正在尝试在图书馆项目中这样做......
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();
答案 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();