onClick()
または他のonSomething()
ハンドラーを参照している場合、これらは常にActivity
フラグメントではなくクラスで呼び出されます。したがって、リンクした例では、ネストされたフラグメントがある場合でも、onArticleSelected()
は に残る必要があります。Activity
フラグメントに情報を渡すには、いくつかのオプションがあります。1 つは、アクティビティ内でフラグメントへの参照を保持できることです。これは、アクティビティが再作成されると失われる可能性があります (設定イベントなど)。
2 番目のより良い方法は、フラグメントにタグを付けてから を使用することfindFragmentByTag
です。
フラグメントを追加するとき (フラグメントに付けたタグであるパラメーター「my_fragment」に注意してください):
getSupportFragmentManager().beginTransaction().add(R.id.fragment_container, myFragment, "my_fragment").commit();
または、あるフラグメントを別のフラグメントに置き換える場合:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, myFragment, "my_fragment").comit();
次に、アクティビティ内からフラグメントで何かをしたい場合onArticleSelected
:
Fragment fragment = getSupportFragmentManger().findFragmentByTag("my_fragment");
if (fragment != null) {
fragment.articleSelected(articleId);
}