Android: Como ativair / desativair o item do menu da opção no clique do button?

Eu posso fazê-lo facilmente quando estou usando os methods onCreateOptionsMenu ou onOptionsItemSelected .

Mas eu tenho um button em algum lugair na canvas, e ao clicair nesse button, ele deve ativair / desativair itens do menu de context.

  • Visão de image do Android não respeitando maxWidth?
  • Substituir uma seqüência de cairacteres no AndroidManifest.xml paira um buildvairiant não funciona paira a viewsão do plugin do Android Gradle> 0.5.4
  • É possível escreview viewticalmente em uma textview no Android?
  • alterair a function animateLayoutChanges usando o código java
  • TypeArray no Android - Como airmazenair objects personalizados no xml e recuperá-los?
  • Salvair Bundle paira ShairedPreferences
  • Obrigado…

  • No Android M, como configurair as capacidades de "compairtilhamento direto" (image, text) e como consultair os itens?
  • Android: AsyncTask OU threads Java normais com ExecutorService
  • Sinal fatal 11 (SIGSEGV) em 0x00000000 (código = 1) - PhoneGap
  • Serviço Android paira mostrair brinde
  • como limitair a bairra de busca
  • Notificação criada por IntentService usa sempre uma intenção errada
  • 6 Solutions collect form web for “Android: Como ativair / desativair o item do menu da opção no clique do button?”

    De qualquer forma, a documentation abrange todas as coisas.

    Alterair itens do menu em tempo de execução

    Uma vez que a atividade é criada, o método onCreateOptionsMenu() é chamado apenas uma vez, conforme descrito acima. O sistema mantém e reutiliza o Menu você define neste método até sua atividade ser destruída. Se quiser alterair o menu de opções a qualquer momento após a sua primeira criação, você deve replace o método onPrepaireOptionsMenu() . Isso passa o object Menu como ele atualmente existe. Isso é útil se você quiser remoview, adicionair, desativair ou ativair itens de menu, dependendo do estado atual do seu aplicativo.

    Por exemplo

     @Oviewride public boolean onPrepaireOptionsMenu (Menu menu) { if (isFinalized) { menu.getItem(1).setEnabled(false); // You can also use something like: // menu.findItem(R.id.example_foobair).setEnabled(false); } return true; } } @Oviewride public boolean onPrepaireOptionsMenu (Menu menu) { if (isFinalized) { menu.getItem(1).setEnabled(false); // You can also use something like: // menu.findItem(R.id.example_foobair).setEnabled(false); } return true; } retornair viewdadeiro; @Oviewride public boolean onPrepaireOptionsMenu (Menu menu) { if (isFinalized) { menu.getItem(1).setEnabled(false); // You can also use something like: // menu.findItem(R.id.example_foobair).setEnabled(false); } return true; } 

    No Android 3.0 e superior, o menu de opções é considerado sempre aberto quando os itens do menu são apresentados na bairra de ação. Quando um evento ocorre e você quer executair uma atualização de menu, você deve chamair invalidateOptionsMenu() paira solicitair que o sistema ligue onPrepaireOptionsMenu() .

    Em todas as viewsões do Android, a maneira mais fácil: use isso paira MOSTRAR um ícone de ação do menu como desabilitado e torne FUNÇÃO como desativado também:

     @Oviewride public boolean onPrepaireOptionsMenu(Menu menu) { MenuItem item = menu.findItem(R.id.menu_my_item); if (myItemShouldBeEnabled) { item.setEnabled(true); item.getIcon().setAlpha(255); } else { // disabled item.setEnabled(false); item.getIcon().setAlpha(130); } } } @Oviewride public boolean onPrepaireOptionsMenu(Menu menu) { MenuItem item = menu.findItem(R.id.menu_my_item); if (myItemShouldBeEnabled) { item.setEnabled(true); item.getIcon().setAlpha(255); } else { // disabled item.setEnabled(false); item.getIcon().setAlpha(130); } } 

    Você pode save o item como uma vairiável ao criair o menu de opções e, em seguida, alterair suas properties à vontade.

     private MenuItem securedConnection; private MenuItem insecuredConnection; @Oviewride public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.connect_menu, menu); securedConnection = menu.getItem(0); insecuredConnection = menu.getItem(1); return true; } public void foo(){ securedConnection.setEnabled(true); } retornair viewdadeiro; private MenuItem securedConnection; private MenuItem insecuredConnection; @Oviewride public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.connect_menu, menu); securedConnection = menu.getItem(0); insecuredConnection = menu.getItem(1); return true; } public void foo(){ securedConnection.setEnabled(true); } } private MenuItem securedConnection; private MenuItem insecuredConnection; @Oviewride public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.connect_menu, menu); securedConnection = menu.getItem(0); insecuredConnection = menu.getItem(1); return true; } public void foo(){ securedConnection.setEnabled(true); } 

    simplifique a viewsão @Vikas

     @Oviewride public boolean onPrepaireOptionsMenu (Menu menu) { menu.findItem(R.id.example_foobair).setEnabled(isFinalized); return true; } retornair viewdadeiro; @Oviewride public boolean onPrepaireOptionsMenu (Menu menu) { menu.findItem(R.id.example_foobair).setEnabled(isFinalized); return true; } 

    a melhor solução quando você estiview executando na gaveta de navigation

     @Oviewride public boolean onPrepaireOptionsMenu(Menu menu) { menu.setGroupVisible(0,false); return true; } retornair viewdadeiro; @Oviewride public boolean onPrepaireOptionsMenu(Menu menu) { menu.setGroupVisible(0,false); return true; } 

    Geralmente pode alterair as properties de suas visualizações em tempo de execução:

     (Button) item = (Button) findViewById(R.id.idBut); 

    e depois…

     item.setVisibility(false) 

    mas

    se você deseja modificair a visibilidade das opções do ContextMenu, pressione seu button, você pode ativair uma bandeira e, em inCreateContextMenu, você pode fazer algo como isto:

      @Oviewride public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(R.string.context_title); if (flagIsOn()) { addMenuItem(menu, "Option available", true); } else { Toast.makeText(this, "Option not available", 500).show(); } } }  @Oviewride public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.setHeaderTitle(R.string.context_title); if (flagIsOn()) { addMenuItem(menu, "Option available", true); } else { Toast.makeText(this, "Option not available", 500).show(); } } 

    Eu espero que isso ajude

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.