2013-06-06 28 views
12

'da gerçekleşiyor setOnDismissListenerDialog cihazında Android'de 4.1.2 kullanan bir aygıtta NoSuchMethodException alıyorum.Neden Android NoSuchMethodException, AlertDialog.Builder'ın setOnDismissListener

aynı kod sürümü 4.2.2 ile emülatörü üzerinde çalışıyor.

new AlertDialog.Builder(this) 
    .setTitle(R.string.select_province) 
    .setOnDismissListener(new OnDismissListener() { 
     public void onDismiss(DialogInterface arg0) { 
     //== other stuff 
    } 
}).show(); 

Herhangi bir fikir?

cevap

27

bu bir soruna geçici İlk böyle diyaloğu oluşturmaktır:

AlertDialog dialog = new AlertDialog.Builder(this).setTitle(R.string.select_province).create(); 

ve sonra iletişim doğrudan dinleyici ayarlayın: o takdirde

dialog.setOnDismissListener(new OnDismissListener() { 
    public void onDismiss(DialogInterface arg0) { 
    //== other stuff 
}); 

Ayrıca bunu göstermek istiyorum:

dialog.show(); 

sonucu aynıdır ve tüm bu yöntemler API 1'den beri desteklenir.

AlertDialog. setOnDismissListener (DialogInterface.OnDismissListener listener)

AlerDialog.Builder. create()

1

bir DialogFragment kullanırken bu cevap arayan herkes için, Mario'nun yöntemi bir IllegalStateException sonuçlanacaktır. Bu durumda, önerildiği gibi setOnDismissListener kullanarak yerine, bir fragmanın en onDismiss mevcut yöntemini geçersiz olmalıdır.