2012-03-23 46 views
8

Tôi là người mới đến với thế giới lập trình và kiến ​​thức của tôi bị hạn chế. Xin lỗi nếu tôi hỏi bất kỳ sai lầm nào. Câu hỏi của tôi là vậy.Vô hiệu hóa Nút khi nhấp vào

Tôi đang tạo Hoạt động có nút START & DỪNG. khi người dùng nhấp vào nút START, dịch vụ phải bắt đầu; và trên dịch vụ STOP phải dừng lại.

Bây giờ tôi muốn tắt nút START khi tôi Nhấp vào nút bắt đầu (dịch vụ bắt đầu khi nhấp vào nút BẮT ĐẦU) và khi nhấp vào nút DỪNG, tôi muốn xem nút BẮT ĐẦU là nút có thể nhấp thông thường.

Tôi đã sử dụng .setEnabled (false) bằng cách tạo đối tượng nút. tôi cần giúp đỡ ... Cảm ơn trước

+1

điều gì sẽ xảy ra khi bạn sử dụng .setEnabled (false)? Bạn có thể cụ thể hơn một chút về sản lượng bạn đang mong đợi và những gì bạn đang nhận được là – Nav

+0

Điều hướng của nó được xem là nút bị tắt. Nhưng tôi muốn nút bị vô hiệu hóa chỉ khi tôi nhấn nút đó – ADD

+0

Huh? Bạn muốn vô hiệu hóa nút Start khi nó đã được nhấp, phải không? Và khi nút Dừng được nhấp, bạn muốn tắt nút Dừng và bật nút Bắt đầu hoặc tôi có hoàn toàn sai không? – Araw

Trả lời

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

& kiểm tra liên kết này How to disable an Android button?

2

trong cơ thể của onclick

disable button1 như nó được nhấp

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

    } 

} 
0

Bạn có thể gọi button.setOnClickListener(null); để hủy listner sự kiện. Ngoài ra, bạn có thể thay đổi nền có thể vẽ để cho nó một hiệu ứng vô hiệu hóa.

PS: Chỉ thử giải pháp này khi không có công trình nào khác hoạt động.

+1

Mặc dù giải pháp preffered hơn là sử dụng phương thức setEnabled (false). – noob

1

Hãy thử điều này:

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

}

Và bố trí của bạn 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

Nếu bạn muốn làm cho nút vô hình sau khi nút cleck sau đó 1 vô hiệu hóa nó như vipin nói và cũng thêm này .setVisibility(View.INVISIBLE); này sẽ ẩn nút sau khi bấm nút và khi bạn muốn một lần nữa làm cho nó có thể nhìn thấy sử dụng này .setVisibility(View.VISIBLE);

LƯU Ý: nếu bạn muốn nút ẩn và không muốn nó chiếm không gian bố cục mà nó yêu cầu thì bạn có thể sử dụng View.GONE thay vì View.INVISIBLE

Tôi hy vọng tôi rõ ràng.

0

nhiều giải pháp ưa thích là,

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

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

Bạn cũng có thể thử: -

cho nút enable-

button.setClickable(true); 

cho nút disable-

button.setClickable(false); 
0

khởi OnClickListener cho button.inside nút nắm tay chỉ đơn giản là làm setEnable() để ..và sai từ thứ hai nghe nút bấm thiết setEnable true

thưởng thức

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

thử này, s hoạt động hoàn hảo

1

Nếu bạn muốn vô hiệu hóa nó từ một lớp học mà bạn có thể sử dụng này ,

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

Bạn cũng phải khai báo 'bối cảnh' ở phần đầu của lớp học của bạn

public class MyClass extends AppCompatActivity {  
    Context context; 

Tôi thường sử dụng nó trong onPreExecute và onPostExecute của tôi khi tôi cần phải thực hiện một hành động và không muốn có một người dùng tiếp tục nhấp vào nút.

@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); 
} 
Các vấn đề liên quan