2015-06-15 2 views
1

Я реализую панель инструментов и заменяю ее на свой экран действий в соответствии с моими требованиями. Теперь я хочу добавить значок на панели инструментов внутри фрагмента. Я попробовал onCreateOptionMenu() и передал ему xml. Но это не сработает. Я также пробовал некоторые другие вещи и googling, но пока ничего не работает. Кто-нибудь имеет представление об этом. Вот мой код фрагментAndroid добавить значок на панели инструментов внутри фрагмента

public class Fragment_FavouriteLocations extends Fragment { 
    public Fragment_FavouriteLocations() { 
     // Required empty public constructor 
    } 

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

    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 

     return inflater.inflate(R.layout.fragment_main_fav_location_row_item, container, false); 


    } 

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

    } 


    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.edit_button) { 
      Toast.makeText(getActivity(), "", Toast.LENGTH_LONG).show(); 
      return true; 
     } 
// 
//  if(id == R.id.action_search){ 
//   Toast.makeText(getApplicationContext(), "Search action is selected!", Toast.LENGTH_SHORT).show(); 
//   return true; 
//  } 

     return super.onOptionsItemSelected(item); 
    } 

} 

Вот мое меню XML

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:mayApp="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/edit_button" 
     mayApp:icon="@android:drawable/ic_menu_edit" 
     android:title="Edit" 
     mayApp:showAsAction="always" /> 
</menu> 

Заранее спасибо

+0

Вы установили setSupportActionBar (mToolbar); ? – 3xplore

+0

попробовал. Но не в силах это сделать. getActivity(). setSupportedActionBar (mToolbar) не работает –

+0

Вы должны сделать это в своей деятельности, можете ли вы выслать свой код активности – 3xplore

ответ

4

В вашем фрагменте, в методе onCreateView(), вы должны добавить:

setHasOptionsMenu(true); 

В противном случае onCreateOptionsMenu() никогда не вызывается.

+2

, а затем как скрыть меню этого фрагмента, когда пользователь покидает этот фрагмент? –

0

вам, возможно, придется использовать invalidateOptionsMenu(), чтобы сказать фрагмент перерисовывать действия меню, как это ...

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