2

ライブラリプロジェクトでこれをやろうとしています...

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();
4

3 に答える 3

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

動作するはずです。ただし、アクティビティのコンテキストを使用していることを確認する必要があります。Activity.getWindow().getDecorView() を使用してトップ ビューを取得することもできます。

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

次に、必要に応じて id を使用しますが、パラメーターとしてビューを取得するか、他の場所から取得する必要があります

于 2014-02-18T06:47:06.620 に答える