我做了一個按鈕,它會調用刷新方法:Android的 - 禁用按鈕仍然工作
... android:onClick="refresh"
在我設置這些方法的開頭:
btn.setEnabled(false);
btn.setClickable(false);
而在最後,我設置啓用並可點擊true。 我的問題是,在程序運行並且按鈕被禁用的第一次點擊之後,我點擊了按鈕,例如3次。交易結束後,它會自動重新啓動3次。所以setEnabled(false)不起作用。 有人可以告訴我爲什麼嗎? Thx。
所以只有一個在我的佈局按鈕:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:layout_gravity="center_horizontal"
android:onClick="refresh"
android:text="Refresh"
android:textStyle="bold"
android:background="@drawable/button"
/>
這裏是方法:
public void refresh(View view){
btn.setEnabled(false);
btn.setClickable(false);
final double currentLat = lat;
final double currentLng = lng;
if(isOnline == true) {
String link = "http://maps.googleapis.com/maps/api/geocode/json?latlng="+currentLat+","+currentLng+"&sensor=true&language=hu";
final GetLocation si = (GetLocation) new GetLocation(this, link).execute();
Runnable runnable = new Runnable() {
public void run() {
handler.post(new Runnable() {
public void run() {
Thread.currentThread();
try {
Thread.sleep(3000);
if(si.getAddress() != null) {
address.setText(si.getAddress());
}
String date = DateFormat.getDateTimeInstance().format(new Date());
String data = date+": ["+currentLat+", "+currentLng+"] - "+si.getAddress()+"\n";
FileManagement f = new FileManagement(filename);
f.writeToFile(data);
btn.setEnabled(true);
btn.setClickable(true);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e){
e.printStackTrace();
}
}
});
}
};
new Thread(runnable).start();
}
}
當然,我不是Android的人,但這似乎是一個直截了當的問題。爲什麼downvotes? –
向我們展示了更多代碼.... – JafarKhQ
更改爲onclicklistener和plese顯示更多代碼 –