Androidのフラグメントにオプションメニューを追加する方法 質問する

Androidのフラグメントにオプションメニューを追加する方法 質問する

フラグメントのグループからオプション メニューに項目を追加しようとしています。

新しいクラスを作成しMenuFragment、メニュー項目を含めたいフラグメント用にこれを拡張しました。コードは次のとおりです。

ジャワ:

public class MenuFragment extends Fragment {

    MenuItem fav;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

コトリン:

class MenuFragment : Fragment {

    lateinit var fav: MenuItem

    override fun onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        fav = menu.add("add");
        fav.setIcon(R.drawable.btn_star_big_off);
    }
}

何らかの理由でonCreateOptionsMenu実行されないようです。

ベストアンサー1

スーパーメソッドを呼び出します。

ジャワ:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater);
    }

コトリン:

    override fun void onCreate(savedInstanceState: Bundle) {
        super.onCreate(savedInstanceState)
        setHasOptionsMenu(true)
    }

    override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
        // TODO Add your menu entries here
        super.onCreateOptionsMenu(menu, inflater)
    }

コードにログ ステートメントを挿入して、メソッドが呼び出されていないか、またはメニューがコードによって修正されていないかどうかを確認します。

また、オプション メニューの処理に参加する必要があることをフラグメントに通知するために呼び出してsetHasOptionsMenu(boolean)いることを確認してください。onCreate(Bundle)

おすすめ記事