OnClickListener içeren bir Düğmem var. Görsel amacıyla, kalıcı bir iletişim kutusu gösteren bir düğme düşünün:Düğmelerdeki hızlı dokunma ile ilgilenme
public class SomeActivity ... {
protected void onCreate(Bundle state) {
super.onCreate(state);
findViewById(R.id.ok_button).setOnClickListener(
new View.OnClickListener() {
public void onClick(View v) {
// This should block input
new AlertDialog.Builder(SomeActivity.this)
.setCancelable(true)
.show();
}
});
}
Normal kullanımda, uyarı iletişim kutusu görüntülenir ve blok daha girdi. Kullanıcılar, düğmeye tekrar dokunmadan önce iletişim kutusunu kapatmalıdır.
Ancak bazen düğmenin OnClickListener diyalogun görünmesinden iki kez çağrılır. Düğmeye gerçekten hızlı bir şekilde dokunarak bunu kolayca çoğaltabilirsiniz. Genelde birkaç kez denemem gerekiyor, ama er ya da geç diyalog blokları girişinden önce birden fazla onClick (...) çağrısını tetikleyeceğim.
Bu davranışı, Android 2.1'de Motorola Droid telefonunda görüyorum. Market'te, zaman zaman insanlara yapılan 4 kilitlenme raporunu aldık.
OnClickListeners'ın yaptıklarına bağlı olarak, bu her türlü tahribata neden olur. Engelleme diyaloglarının ilk dokunuştan sonra girişi engelleyeceğini nasıl garanti edebiliriz?
AlertDialog'u onClick() öğesinin dışında oluşturmayı denediniz mi ve on() içindeki show() işlevini çağırdınız mı? – jfpoilpret