2

ListFragmentがあり、メニューを追加する必要があります。これは私のコードです:listuser_menu:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/any_option"
    android:title="In Context Menu" />
</menu>

私のListFragment:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    View mFooterView;
    // We need to use a different list item layout for devices older than Honeycomb
    int layout = Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB ?
    android.R.layout.simple_list_item_activated_1:android.R.layout.simple_list_item_1;
    if(getListAdapter()==null){
        // init adapter
        adapter=new UserArrayAdapter(getActivity(),
                MOBILE_OS);
    }
    else{
            adapter.notifyDataSetChanged(); 
        } 

    // set adapter
    registerForContextMenu(getListView());
    setListAdapter(adapter);

}
@Override
public void onCreateContextMenu(final ContextMenu menu, final View v,
final ContextMenuInfo menuInfo){
    menu.clear();
    super.onCreateContextMenu(menu, v, menuInfo);   
    final MenuInflater inflater = getActivity().getMenuInflater();
    inflater.inflate(R.menu.listuser_menu, menu);   
}

しかし、メニューが表示されません。なぜですか?オプションメニューの登録方法は?ありがとう!

4

3 に答える 3

7

フラグメントにメニューを追加することは可能です。フラグメントで次のコードを使用してください。

@Override
public void onActivityCreated(Bundle savedInstanceState) {
setHasOptionsMenu(true);

}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.listuser_menu, menu);
}

setHasOptionsMenuを使用すると、フラグメントにメニューを表示できます。

于 2013-01-16T15:17:25.383 に答える
2

MainActivity 内でこのサンプル コードを使用します。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);



        SubMenu subMenu1 = menu.addSubMenu("Action Item");
        subMenu1.add(0, 1, 0, "Sample");
        subMenu1.add(0, 2, 0, "Menu");
        subMenu1.add(0, 3, 0, "Sair");

        MenuItem subMenu1Item = subMenu1.getItem();
        subMenu1Item.setIcon(R.drawable.ic_title_share_default);
        subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);




        return true;
    }
于 2013-01-16T13:59:39.420 に答える
1

はい、ListFragment にメニューを追加し、以下のコードを ListFragment に追加できます

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

その後、以下に示すように、フラグメントバージョンの onCreateOptionsMenu() メソッドを追加します

   @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {     
    super.onCreateOptionsMenu(menu, inflater);
    inflater.inflate(R.menu.menu_xml, menu);
}

@ Sherlock Yiu が「super.onActivityCreated(savedInstanceState);」をonActivityCreated()メソッドに追加するのを忘れていましたが、残りは同じです。

また、「android-support-v4.jar」をプロジェクト ライブラリに追加することも忘れないでください。

上記のコードスニペットは私のために働いています。

于 2013-10-01T05:01:39.967 に答える