Отключить кнопку при нажатии - PullRequest
10 голосов
/ 23 марта 2012

Я новичок в мире программирования, и мои знания ограничены. Пожалуйста, извините меня, если я спрошу любую ошибку. У меня вопрос такой.

Я создаю мероприятие с кнопкой START & STOP. когда пользователь нажимает кнопку START, служба должна запускаться; и на СТОП служба должна остановиться.

Теперь я хочу отключить кнопку «ПУСК», когда я нажимаю кнопку «Пуск» (служба запускается при нажатии кнопки «ПУСК») и когда я нажимаю кнопку «СТОП», я хочу видеть кнопку «ПУСК» как обычную нажимаемую кнопку.

Я использовал .setEnabled (false), создав объект кнопки. Мне нужна помощь ... Заранее спасибо

Ответы [ 10 ]

11 голосов
/ 23 марта 2012
int count = 0;

if (count == 0) {
    stop.setEnabled(false);
    PlayButton.setEnabled(true);
}

@Override
public void onClick(View v) {
    switch(v.getId()) {
        case R.id.play:
            count++;
            play.setEnabled(false);
            Toast.makeText(this, "Button Disabled", Toast.LENGTH_LONG).show();
            Stopbutton.setEnabled(true);
            break;

        case R.id.stop:
            Toast.makeText(this, "Button Disabled", Toast.LENGTH_LONG).show();
            count--;    
            PlayButton.setEnabled(true);
            stop.setEnabled(false);
            break;        
    }
}

и проверьте эту ссылку Как отключить кнопку Android?

8 голосов
/ 30 декабря 2013

Вы также можете попробовать: -

для включения кнопки-

button.setClickable(true); 

для отключения кнопки-

button.setClickable(false);
3 голосов
/ 23 марта 2012

в теле онклика

отключить button1 при нажатии

public void onClick(View v) {
  if(v.getId() == R.id.button1)
   {
       Button btn = (Button)findViewById(R.id.buton1);
       btn.setEnabled(false);

   }

}
1 голос
/ 26 января 2018

Если вы хотите отключить его от другого класса, вы можете использовать это,

Button btn = ((MainActivity)context).findViewById(R.id.myButton);
btn.setEnabled(false);    //or (true) to enable it

Вы также должны объявить 'context' в начале вашего класса

public class MyClass extends AppCompatActivity {    
    Context context;

Я обычноиспользуйте его в моих onPreExecute и onPostExecute, когда мне нужно выполнить действие и не хотите, чтобы пользователь продолжал нажимать кнопку.

@Override
protected void onPreExecute() {
    //some actions to be performed or set before executing task 
    Button btn = ((MainActivity)context).findViewById(R.id.myButton);
    btn.setEnabled(false);
}

@Override
protected void onPostExecute() {
    //some actions to be performed or set after executing task 
    Button btn = ((MainActivity)context).findViewById(R.id.myButton);
    btn.setEnabled(true);
}
1 голос
/ 23 марта 2012

Если вы хотите сделать кнопку невидимой после щелчка кнопки, то сначала отключите ее, как сказал vipin, а также добавьте .setVisibility(View.INVISIBLE);. Это будет скрывать кнопку после нажатия кнопки, а когда вы захотите снова сделать ее видимой, используйте эту .setVisibility(View.VISIBLE);

ПРИМЕЧАНИЕ: если вы хотите, чтобы кнопка была невидимой и не хотела, чтобы она занимала требуемое пространство макета, вы можете использовать View.GONE вместо View.INVISIBLE

. НадеюсьЯ чист.

1 голос
/ 23 марта 2012

Попробуйте это:

MainActivity.java

import android.app.Activity;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.View;

public class MainActivity extends Activity {

private Button start, stop;

@Override
public void onCreate(Bundle savedInstanceState){
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    start = (Button)findViewById(R.id.start);
    stop = (Button)findViewById(R.id.stop);

    start.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            start.setVisibility(View.GONE);
            /* do something else */
        }
    });

    stop.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            start.setVisibility(View.VISIBLE);
            /* do something else */
        }
    });
}

}

А твой макет main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/start"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Start"
android:visibility="visible"
/>
<Button
android:id="@+id/stop"
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Stop"
android:visibility="visible"
/>

0 голосов
/ 17 марта 2016
myButton.setEnabled(false);

Timer buttonTimer = new Timer();
buttonTimer.schedule(new TimerTask() {

    @Override
    public void run() {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                myButton.setEnabled(true);
            }
        });
    }
}, 5000);

попробуйте это, она отлично работает

0 голосов
/ 19 июня 2014

Инициализируйте onClickListener для кнопки. Внутри первой кнопки просто установите setEnable () в false .. и со второй кнопки прослушивания нажмите setEnable в true

наслаждайтесь

0 голосов
/ 18 сентября 2013

более предпочтительным решением является

onclick(){
  btn.setEnabled(false);
  btn.setClickable(false);
  //yourwork
  myWork();
}

myWork(){
 //your tasks.
 btn.setEnabled(true);
 btn.setClickable(true);
}
0 голосов
/ 23 марта 2012

Вы можете позвонить button.setOnClickListener(null);, чтобы отменить список событий. Кроме того, вы можете изменить фон для рисования, чтобы придать ему отключенный эффект.

PS: Попробуйте это решение, только когда ничего не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...