簡體   English   中英

Android:單擊一個 MenuItem 使另一個 MenuItem 在工具欄中可見

[英]Android: click on one MenuItem to make another MenuItem visible in the toolbar

例子:

  • 菜單 1(可見 = 假)
  • 菜單 2(可見 = 假)
  • 菜單 3(可見 = 真)

單擊 Menu3 時,我希望顯示 Menu1 和 Menu2。

@Override
public void onPrepareOptionsMenu(Menu menu) {
    MenuItem Menu1 = menu.findItem(R.id.Menu1);
    MenuItem Menu2 = menu.findItem(R.id.Menu2);

    Menu1.setVisible(false);
    Menu2.setVisible(false);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    if (id == R.id.Menu3) {
        item.setVisible(false);
        Menu menu;
        menu.findItem(R.id.Menu1).setVisible(true);

        return true;
    }

    return super.onOptionsItemSelected(item);
}

以下代碼不起作用:

Menu menu;
menu.findItem(R.id.Menu1).setVisible(true);

這段代碼:

Menu menu;
menu.findItem(R.id.Menu1).setVisible(true);

將無法工作,因為menu變量未初始化。 您應該根據需要初始化menu變量,然后調用 setVisible 方法。

您可以使用一些boolean變量來設置菜單項的所需狀態。 然后,只要用戶單擊Menu3項,您就更改boolean值並調用invalidateOptionsMenu(); . 這將導致重新創建菜單,因此其他菜單項將根據需要顯示:

public class MainActivity extends AppCompatActivity
{
    private boolean showMenu1, showMenu2;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  

        // set the initial state here:
        showMenu1 = false;
        showMenu2 = false;
        ...
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        menu.findItem(R.id.Menu1).setVisible(showMenu1);
        menu.findItem(R.id.Menu2).setVisible(showMenu2);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
         int id = item.getItemId();
         if (id == R.id.Menu3)
         {
             showMenu1 = true;
             showMenu2 = true;
             invalidateOptionsMenu();
             return true;
         }
         ...
    }

}

暫無
暫無

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

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