2012-03-23 37 views
8

Sono principiante del mondo della programmazione e la mia conoscenza è limitata. Per favore scusami se chiedo qualche errore. La mia domanda è quella.Pulsante Disabilita al momento del clic

Sto creando un'attività che ha il pulsante START & STOP. quando l'utente fa clic sul pulsante START, deve iniziare un servizio; e nel servizio STOP deve fermarsi.

Ora voglio disattivare il mio pulsante START quando faccio clic sul pulsante di avvio (il servizio si avvia premendo il pulsante START) e quando si fa clic sul pulsante STOP voglio vedere il pulsante START come normale pulsante cliccabile.

Ho usato .setEnabled (false) creando l'oggetto pulsante. Ho bisogno di aiuto ... Grazie in anticipo

+1

cosa succede quando si usa .setEnabled (false)? Puoi essere un po 'più specifico su quale output ti aspetti e cosa stai ricevendo? – Nav

+0

Nav: visto come il pulsante è disabilitato. Ma voglio che il pulsante sia disabilitato solo quando premo quel pulsante – ADD

+0

Huh? Vuoi disabilitare il pulsante Start quando è stato cliccato, giusto? E quando si fa clic sul pulsante Stop, si desidera disabilitare il pulsante Stop e abilitare il pulsante Start, oppure sto sbagliando tutto? – Araw

risposta

10
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;   
    } 
} 

& controllare questo link How to disable an Android button?

2

nel corpo di Button1 onclick

disabilita come ottenere cliccato

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

    } 

} 
0

È possibile chiamare button.setOnClickListener(null); per annullare The Listener evento. Inoltre puoi cambiare il background drawable per dargli un effetto disabilitato.

PS: Prova questa soluzione solo quando non funziona nient'altro.

+1

Anche se la soluzione più preffered è utilizzare il metodo setEnabled (false). – noob

1

Prova questo:

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 */ 
     } 
    }); 
} 

}

E il layout 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" 
/> 

1

Se si desidera rendere il pulsante invisibile dopo che il pulsante cleck quindi prima disabilitarlo come ha detto Vipin e anche aggiungere questo .setVisibility(View.INVISIBLE); questo nascondere il pulsante dopo che il pulsante click e quando si vuole fare di nuovo l'uso visibile questo .setVisibility(View.VISIBLE);

NOTA: se si desidera che il pulsante sia invisibile e non si desideri che lo spazio di layout sia necessario, è possibile utilizzare View.GONE anziché View.INVISIBLE

Spero di essere chiaro.

0

più soluzione preferita è,

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

myWork(){ 
//your tasks. 
btn.setEnabled(true); 
btn.setClickable(true); 
} 
6

Potete anche provare: -

pulsante Enable-

button.setClickable(true); 

pulsante disable-

button.setClickable(false); 
0

inizializzare onClickListener per il button.inside il pulsante pugno semplicemente fare setEnable() per falso ..e dal secondo pulsante scatto ascoltatore impostata su true setEnable

godere

0
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); 

provare questo, s funzionano perfettamente

1

Se si desidera disabilitare da un'altra classe è possibile utilizzare questo ,

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

È inoltre necessario dichiarare 'contesto', all'inizio della tua classe

public class MyClass extends AppCompatActivity {  
    Context context; 

io di solito lo uso nel mio OnPreExecute e OnPostExecute quando ho bisogno di eseguire un'azione e non voglio un utente per continuare a fare clic sul pulsante.

@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); 
} 
Problemi correlati