2012-03-23 116 views
8

我是編程界的新手,我的知識是有限的。請原諒我,如果我問任何錯誤。 我的問題是。點擊禁用按鈕

我正在創建一個有START & STOP按鈕的活動。當用戶點擊開始按鈕時,服務必須開始;並停止服務必須停止。

現在我想禁用我開始按鈕,當我點擊開始按鈕(服務啓動上單擊開始按鈕),當點擊停止按鈕,我想看到的START鍵正常點擊按鈕。

我已經使用.setEnabled(false)通過創建按鈕對象。 我需要幫助...在此先感謝

+1

當你使用.setEnabled(false)時會發生什麼?你可以更具體一點,你什麼樣的輸出,你正在得到什麼 – Nav 2012-03-23 12:03:37

+0

導航 - 它的按鈕被禁用。但是我只想按下該按鈕時禁用按鈕 – ADD 2012-03-23 12:13:57

+0

咦?你想在點擊時禁用開始按鈕,對嗎?當停止按鈕被點擊時,你想禁用停止按鈕並啓用開始按鈕,或者我全都錯了嗎? – Araw 2012-03-23 12:17:53

回答

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

&檢查此鏈接 How to disable an Android button?

2

中的onclick

禁用Button1的身體,因爲它獲得點擊

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

    } 

} 
0

您可以撥打button.setOnClickListener(null);取消事件聽者。另外,您可以更改背景繪製以使其具有禁用效果。

PS:只有嘗試這種解決方案時,沒有別的辦法。

+1

雖然更多的優先解決方案是使用setEnabled(false)方法。 – noob 2012-03-23 12:26:55

1

試試這個:

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" 
/> 

1

如果你想使按鈕按鈕cleck後看不見然後第一個禁用它作爲VIPIN說,也可以添加這個.setVisibility(View.INVISIBLE);這將隱藏按鈕,點擊後的按鈕,當你想再次使其可見使用這種.setVisibility(View.VISIBLE);

注意:如果您希望按鈕是看不見的,而不是不希望它消耗它需要的佈局空間,那麼你可以使用View.GONE代替View.INVISIBLE

我希望我很清楚。

0

更優選的方案是,

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

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

您也可以嘗試: -

的按鈕enable-

button.setClickable(true); 

的按鈕禁止 -

button.setClickable(false); 
0

初始化onClickListener爲button.inside拳頭按鈕簡單地做setEnable()從第二個按鈕的點擊監聽器設置setEnable假..和真正

享受

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

試試這個吧,作品完美

1

如果你想從另一個類,你可以使用該禁用,

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

您還必須在你的類的開頭聲明「語境」

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