0

アイテムが選択されると、リストビューと通話の詳細アクティビティがあります。私の onCreateOptionsMenu には、アクション バーにメニューを表示する際にエラーがあります。

public boolean onCreateOptionsMenu(Menu menu) {
     new MenuInflater(getActivity()).inflate(R.menu.detail_view_menu, menu);
     return (super.onCreateOptionsMenu(menu));
 }

エラーは、 Fragment 型のメソッド onCreateOptionsMenu(Menu, MenuInflater) は、引数 (Menu) には適用できません。リターンラインでエラーが発生しました。fragmentTransaction を使用してリストビューと詳細アクティビティを実装します。ありがとう

4

2 に答える 2

0

このように試してみてください。ただし、メインのアクティビティクラスに入れてください。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.detail_view_menu, menu);
    return true;
}

または、フラグメントでActionBarにアイテムを追加する場合は、少し異なる構成を使用する必要があります。

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

追加する必要のある追加のパラメーターがあります(MenuInflater)。また、フラグメントでは、onCreateOptionsMenuはブール値を返しません。

setHasOptionsMenu(true)インフレータができたので、フラグメントのonCreate()メソッドを呼び出す必要があります。そうしないと、アイテムはアクションバーに表示されません。

メニューのインフレを処理するフラグメントコードは、次のようになります。

public class DetailFragment extends Fragment {

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

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
       super.onCreateOptionsMenu(menu, inflater);
       inflater.inflate(R.menu.detail_view_menu, menu);
    }
}
于 2013-03-24T03:29:15.677 に答える
0

onCreateOptionsMenu(Menu menu) は、フラグメント自体ではなく、フラグメントをホストするアクティビティにある必要があります。

BaseActivity を拡張して、そこに一度だけ含めることも検討できます。

public class BaseActivity extends Activity {

    public boolean onCreateOptionsMenu(Menu menu) {
        new MenuInflater(getActivity()).inflate(R.menu.detail_view_menu, menu);
        return (super.onCreateOptionsMenu(menu));
    }

}

public class ListActivity extends BaseActivity {
    // ...
}

public class DetailActivity extends BaseActivity {
    // ...
}
于 2013-03-24T03:17:53.207 に答える