2015-06-30 3 views
0

У меня есть два Панели инструментов в моем приложении, и у меня есть два menu_main.xml и menu_main2.xml. Значок отображается правильно на обеих панелях инструментов, но действие на одной из панелей инструментов не работает. Как я могу это исправить?Android Toolbar Значок действия не работает

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    //Setup Toolbar 
    toolbar = (Toolbar) findViewById(R.id.tool_bar); 
    setSupportActionBar(toolbar); 
    toolbar2 = (Toolbar) findViewById(R.id.tool_bar2); 
    toolbar2.inflateMenu(R.menu.menu_main2); 

Это мой onCreateOptions,

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

и onOptionsItemSelected.

@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(); 
    web1 = (WebView) findViewById(R.id.web1); 
    web2 = (WebView) findViewById(R.id.web2); 
    web3 = (WebView) findViewById(R.id.web3); 

Это действие работает, то из панели инструментов,

if (id == R.id.action_google) { 
     web1.setVisibility(View.GONE); 
     web2.setVisibility(View.GONE); 
     web3.setVisibility(View.VISIBLE); 
    } 

Это из Toolbar2, который не работает ...

if (id == R.id.action_naver) { 
     web1.setVisibility(View.VISIBLE); 
     web2.setVisibility(View.GONE); 
     web3.setVisibility(View.GONE); 
    } 
+0

Можете ли вы использовать setOnMenuItemClickListener для каждой панели инструментов вместо onOptionsItemSelected? – heloisasim

+0

@heloisasim Спасибо! Он работает отлично. – taeuk

ответ

2
toolbar2.setOnMenuItemClickListener(new OnMenuItemClickListener() { 

     @Override 
     public boolean onMenuItemClick(MenuItem arg0) { 
      if(arg0.getItemId() == R.id.whatever){ 

      } 
      return false; 
     } 
    }); 
0

Только первая панель будет выбрана up onOptionsItemSelected, поскольку это единственный, который вы установили как supportActionBar. Для другой панели инструментов вам нужно будет установить прослушиватели кликов для своих элементов. Как предложил heloisasim, вы можете использовать метод setOnMenuItemClickListener для этого.

Смежные вопросы