簡體   English   中英

如何隱藏片段中工具欄中的OptionMenu?

[英]How do I hide the OptionMenu in a toolbar from a fragment?

我在HomeActivity選項菜單。 但是我需要選項菜單來顯示某些fragments ,而隱藏在其他fragments中。

我嘗試了setHasOptionsMenu(false); onCreate()片段方法中的行。

這是optionmenu按鈕聲明HomeActivity

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

//action when i press it
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        // action with ID action_refresh was selected
        case R.id.toolbar_acquista:
            Toast.makeText(this, "Acquisto", Toast.LENGTH_SHORT)
                    .show();
            break;
    }

    return true;
}

我正在嘗試使此fragment在選項菜單中clickable和可見,而在其他菜單中則不可unclickable和不可見。

首先Clear Menu例如

@Override 
public void onPrepareOptionsMenu(Menu menu) {
    menu.clear();
}

然后TRUE作為setHasOptionsMenu(true); 在片段方法的onCreate()

不要在家庭活動中膨脹菜單,而是在片段內部膨脹菜單

像這樣

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

這樣,只有當片段可見時,菜單項才會在片段中膨脹

首先在Fragment中覆蓋Create方法並編寫setHasOptionsMenu(true)

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

然后在Fragment中重寫OnPrepareOptionMenu方法並編寫放置在其中的代碼。 我只隱藏搜索菜單。 同樣,您可以根據自己的選擇隱藏所有菜單項或選擇項。

   @Override
public void onPrepareOptionsMenu(Menu menu) {
    MenuItem item=menu.findItem(R.id.menu_search);
    if(item!=null)
        item.setVisible(false);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM