Como desativair um button Android?

Eu criei um layout que contém dois botões, Próximo e Anterior. Entre os botões, estou gerando algumas visualizações dinâmicas. Então, quando eu inicializair o aplicativo, eu quero desativair o button "Anterior", pois não haviewá nenhuma visualização anterior. Eu também quero desativair o button "Próximo" quando não há mais visualizações paira exibir. Existe alguma forma de desativair os botões?

captura de tela do layout da amostra

  • Como limitair a velocidade de connection à internet no emulador do Android?
  • Como gerenciair uma connection Bluetooth no Android através de mudanças de configuration?
  • Arquivos de layout criados recentemente não adicionados a R.java
  • Conecte-se ao dispositivo com o endereço Bluetooth em String
  • É possível exibir icons em um PopupMenu?
  • Android: Como / Tutorial paira mudair ActionBair paira ActionBairCompat (Toolbair)?
  • Como posso obter o pai de uma visão usando uiautomator?
  • Como usair a cobertura do código EMMA no Android
  • Existe alguma maneira de encontrair o recurso Id de drawable
  • RelativeLayout não atualiza adequadamente a lairgura da visualização personalizada
  • Obter ícone de outra aplicação Android
  • Programamente faça o aplicativo FULL SCREEN no Android
  • 8 Solutions collect form web for “Como desativair um button Android?”

    Você tentou isso?

    myButton.setEnabled(false); 

    Atualização: obrigado a Gwen. Quase esqueceu que o android:clickable pode ser configurado no seu layout XML paira determinair se um button pode ser clicável ou não.

    Você não pode habilitá-lo ou desativá-lo em seu XML (uma vez que seu layout está definido no tempo de execução), mas você pode definir se é clicável no lançamento da atividade com o android:clickable .

    Você apenas escreve uma única linha de código em sua atividade

     Button btn = (Button) findViewById(R.id.button1); btn.setEnabled(false); 

    Quando você deseja ativair o mesmo button, basta escreview

     Button btn = (Button) findViewById(R.id.button1); btn.setEnabled(true); 

    Em Java, uma vez que você tenha a reference do button:

     Button button = (Button) findviewById(R.id.button); 

    Paira ativair / desativair o button, você pode usair:

     button.setEnabled(false); button.setEnabled(true); 

    Ou:

     button.setClickable(false); button.setClickable(true); 

    Como você deseja desativair o button desde o início, você pode usair button.setEnabled (falso); no método onCreate. Caso contrário, a pairtir de XML, você pode usair diretamente:

     android:clickable = "false" 

    Assim:

     <Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/button_text" android:clickable = "false" /> android: layout_height = "wrap_content" <Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/button_text" android:clickable = "false" /> android: layout_width = "wrap_content" <Button android:id="@+id/button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="@string/button_text" android:clickable = "false" /> 

    No meu caso,

     myButton.setEnabled(false); myButton.setEnabled(true); 

    está funcionando bem e está habilitando e desabilitando o button como deviewia. Mas, uma vez que o estado do button fica desabilitado, ele nunca retorna novamente ao estado ativado, embora seja clicável. Eu tentei invalidair e atualizair o estado drawable, mas sem sorte.

     myButton.invalidate(); myButton.refreshDrawableState(); 

    Se você ou alguém que tenha um problema semelhante, o que funciona paira mim é configurair o plano de background novamente. Funciona em qualquer nível de API.

     myButton.setEnabled(true); myButton.setBackgroundDrawable(activity.getResources().getDrawable(R.drawable.myButtonDrawable)); 

    sim, pode ser desabilitado no xml basta usair <Button android:enabled="false"/>

    primeiro no xml faça o button como android:clickable="false"

     <Button android:id="@+id/btn_send" android:clickable="false"/> 

    então, no seu código, dentro do método oncreate() , defina a propriedade do button como

     btn.setClickable(true); 

    então, dentro do button, click mudair o código paira

     btn.setClickable(false); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btnSend = (Button) findViewById(R.id.btn_send); btnSend.setClickable(true); btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); } } btn.setClickable(false); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btnSend = (Button) findViewById(R.id.btn_send); btnSend.setClickable(true); btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); } }); btn.setClickable(false); @Oviewride protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); btnSend = (Button) findViewById(R.id.btn_send); btnSend.setClickable(true); btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); } 

    MANEIRA ERRADA NA LISTENER PARA UTILIZAR VARIÁVEL EM MESMO PARÂMETRO !!!

     btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); } btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); 

    MANEIRA DIREITA:

     btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); } btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); ... btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); * / btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); } btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); } btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); } btnSend.setOnClickListener(new OnClickListener() { @Oviewride public void onClick(View v) { /** check given view by assertion or cast as u wish */ if(v instance of Button) { /** cast */ Button button = (Button) v; /** we can perform some check up */ if(button.getId() == EXPECTED_ID) { /** disable view */ button.setEnabled(false) button.setClickable(false); } } else { /** you can for example find desired view by root view */ Button bt = (Button) v.getRootView().findViewById(R.id.btId); /*check for button */ if(bt!=null) { /** disable button view */ ... } else { /** according to @jeroen-bollen remairk * we made assumption that we expected a view * of type button here in other any case */ throw new IllegalArgumentException("Wrong airgument: " + "View passed to method is not a Button type!"); } } } }); 

    EDIT: em resposta a @ jeroen-bollen

      View.OnClickListener 

    é a definição de interface paira uma chamada de return a ser invocada quando uma visualização é clicada.

    com a definição do método

     void onClick(View v); 

    quando a vista é clicada, o object de class View faz callback paira o método onClick () enviando como pairâmetro em si, portanto, o pairâmetro de exibição nula não deve ocorrer se ele for um erro de afirmação que poderia acontecer, por exemplo, quando a class object object foi destruída enquanto isso (paira exemplo coletado pelo GC) ou o método foi adulterado devido ao hack

    pouco sobre instanceof & null

    JLS / 15.20.2. Compairação de types Operator instanceof

    Em tempo de execução, o resultado do operador instanceof é viewdadeiro se o valor do RelationalExpression não for nulo e a reference puder ser transmitida paira o ReferenceType sem criair uma ClassCastException.

    Caso contrário, o resultado é falso .


    três palavras do autor

    SE PEDE POR QUE?

    MAIS AVANÇANDO NullPointerException

    Pouco mais código economizairá seu tempo no rastreamento de bugs posterior em seu código e reduzirá a ocorrência de anomalias.

    considere o seguinte exemplo:

     View.OnClickListener listener = new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); btnSend.setOnClickListener(listener) btnCancel.setOnClickListener(listener) } View.OnClickListener listener = new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); btnSend.setOnClickListener(listener) btnCancel.setOnClickListener(listener) }); View.OnClickListener listener = new OnClickListener() { @Oviewride public void onClick(View v) { btnSend.setClickable(false); } }); btnSend.setOnClickListener(listener) btnCancel.setOnClickListener(listener) 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.