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

如何以编程方式获取android.R.Id.content的资源Id?,android,android-fragments,resource-id,Android,Android Fragments,Resource Id,我正试图在一个图书馆项目中做到这一点 int containerViewId = getResources().getIdentifier("content", "android.R.id", getPackageName()); getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit(); 但我在替换中得到了一个例外: 原因:java.lang.Illeg

我正试图在一个图书馆项目中做到这一点

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

getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit();
但我在替换中得到了一个例外: 原因:java.lang.IllegalArgumentException:必须使用非零ContainerWebID

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

谢谢

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

int containerViewId = getResources().getIdentifier("rootView", "id", getPackageName());
getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit();
int containerViewId = getResources().getIdentifier("rootView", "id", getPackageName());
getFragmentManager().beginTransaction().replace(containerViewId, new SettingsFragment()).commit();
应该有用。但是,您必须确保您正在使用活动的上下文。你也可以使用 Activity.getWindow().getDecorView() 以获取俯视图

int containerViewId = view.getId();

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

我已使用命名视图解决了此问题,在活动的xml布局中设置id,并使用以下代码替换根视图

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

我可以通过编程方式访问大多数资源名称。这不是问题所在。正是这个特定的资源id(android.R.id.content)返回零。我想知道通过片段管理器以编程方式获取根内容视图(android.R.id.content)以替换它的正确方法。这两个建议都返回一个视图,但是我需要视图的资源id。android.R.id.content是视图的id。如果它返回零,您确定要从活动上下文或片段中获取它吗?它来自活动上下文,但它来自嵌入式库项目中。我想这就是为什么它会返回零。资源被合并。我决定不使用android.R.id.content,而只是通过设置布局的id来替换布局的根视图。