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);
}