@thorikiriのてょりっき

@thorikiriがWebとかAndroidとかの技術ネタや本を読んだブログです

ActionBarのタブでFragmentとSplitActionBarのメニューを切り替える

ActionBarのタブでFragmentを切り替える - @thorikiriのてょりっきの続きです。
別にSliptでなくても良いのですが、Fragmentを切り替えたら、それに対応するメニューも切り替えるってことはよくありますよね。
Activityだけでなく、Fragmentにもメニューを定義することが出来ます。なので、今回はFragmentにメニューを定義してみます。
大事なところは、onCreateで、setHasOptionsMenu(true)を呼び出してFragmentがメニューを保持していることを通知することと、onCreateOptionsMenuで、すでにあるメニューを一旦クリアしてから再度生成しなおすことですかね。

public class Tab1Fragment extends SherlockFragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tab1_fragment, container, false);
        retrun view;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true); // OptionMenuがあることを通知する
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        menu.clear(); // Fragmentごとなのでクリアする
        // メニューを作る
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case XXXXX:
            // TODO
            break;
        default:
            break;
        }
    }
}

アプリを作ろう!  ANDROID入門 (アプリを作ろう! シリーズ)

アプリを作ろう! ANDROID入門 (アプリを作ろう! シリーズ)