2

我正在尝试在图书馆项目中执行此操作...

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

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

但是我在替换时得到了这个异常: 引起:java.lang.IllegalArgumentException: Must use non-zero containerViewId

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

谢谢。

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

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

3 回答 3

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

应该管用。不过,您必须确保您使用的是 Activity 的上下文。您还可以使用 Activity.getWindow().getDecorView() 来获取顶视图。

于 2014-02-18T00:40:56.957 回答
0
int containerViewId = view.getId();

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

于 2014-02-18T06:47:06.620 回答
0

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

int containerViewId = getResources().getIdentifier("rootView", "id", getPackageName());
getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit();
于 2014-02-19T21:22:17.840 回答