私は、3つのフラグメントをサポートするタブホストとViewPagerを持つアクティビティを持っています。私は、それぞれのフラグメントでActionBarから直接選択可能なメニュー項目を使用して変更するために、ActivityにあるActionBarを使用したいと思います。下位フラグメントのActionBarアイテムの使用方法
メッセージをアクティビティからフラグメントに送信して、アクションバーアイテムの1つを実装するように指示する最善の方法は何ですか?
私は次のことを試してみました:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
FragmentManager manager = getSupportFragmentManager();
List<Fragment> fs = new ArrayList<>(manager.getFragments());
int fragId = fs.get(0).getId();
PlayFragment fragment = (PlayFragment) manager.findFragmentById(fragId);
fragment.settingsMenu();
return true;
これは働くが、また、それが動作するように取得するフラグメントの順序を知っている必要がありますのは悪い形でされていません。この方法は私のためには機能しませんでした。私はそれを動作させるためにbroadcastSenderを使うことができるのは分かっていますが、それも悪い形です。ここでの本当の問題は、フラグメントはTabHost内ViewPagerの上に座っているので、確実にIDやタグを取得する方法がないということなので、
manager.findFragmentById(fragId)と manager.findFragmentByTag(」 MyFragmentName ")は役に立ちません。
フラグメント内のOnClickListenerにツールバーをアタッチしようとすると、機能しません。フラグメントにはサポートがありません。 @Override public boolean onOptionsItemSelected(MenuItem item);
解決策を探し続けるつもりです。ありがとう。