2016-07-11 2 views
2

メインアクティビティのメニューと、メインアクティビティに含まれるフラグメントのメニューが必要です。フラグメントが表示されたら、メインのアクティビティメニューを削除し、フラグメントメニューを展開します。しかし私は、これは結果であり、これを達成しようとしている。それだけでアクティビティではなくフラグメント内の別のメニューを使用する方法は?

メインアクティビティメニュースニペット:フラグメントが表示されている

enter image description here

メインアクティビティメニュースニペット:

enter image description here

明らかに、主なアクティビティのメニューを置き換える代わりに、フラグメントメニューを作成して膨らませたにもかかわらず、それに追加しています。ここで

はこの責任活動のコードです:ここで

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    // Depending on which fragment is used display different actions. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

は、この責任のフラグメントのコードです:ここで

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
setHasOptionsMenu(true); 
} 

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

はfriend_menu.xmlです:

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <item 
    android:icon="@drawable/ic_person_add_black_24dp" 
    android:id="@+id/nav_person_add" 
    android:title="Add people" 
    app:showAsAction="ifRoom" /> 

</menu> 

(検索アクションとadd_friendアクションなしで)目的のメニューを取得するにはどうすればよいですか?あなたを維持したい場合は、clear()にメニューを試みることができる// Depending on which fragment is used display different actions.

答えて

1

:私は言う断片が活動中で、コメントのように表示されたとき、活動からこれを管理し、唯一の特定の断片メニューを膨らませるために単純であり得ることを実感しますそのような構造。あなたのFragment

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    menu.clear(); // Remove all existing items from the menu, leaving it empty as if it had just been created. 
    inflater.inflate(R.menu.friend_menu, menu); 
} 

関連する問題