2013-06-12 45 views
0

我搜索了互聯網,但沒有找到好的東西。將幾個AliertDialogs處理成一個Dialog.onClickListener

所以我試圖找到我的方式來解決這個問題。 我找到了一個,但是現在我想問一下,這個太髒了解決方案,是否用過,是否危險?

import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.DialogInterface; 
import android.content.DialogInterface.OnClickListener; 
import android.os.Bundle; 

public class MyActivity extends Activity implements OnClickListener { 

    public void onCreate(Bundle b) { 
     new AlertDialog.Builder(this) 
     .setTitle("Title1") 
     .setPositiveBUtton("Ok",this) 
     .show(); 
     new AlertDialog.Builder(this) 
     .setTitle("Title2") 
     .setPositiveButton("Ok",this) 
     .show(); 
    } 

    @Override 
    public void onClick(DialogInterface dialog, int id) { 
     String dialogTitle = ((AlertDialog)dialog).getActionBar().getTitle().toString(); 
     if(dialogTitle.equals("Title1")) { 
     switch(id) { 
      //do smth 
     } 
     } else if(dialogTitle.equals("Title2")) { 
     switch(id) { 
      //do smth 
     } 
     } else { 
     //no such dialog 
     } 
    } 
} 

回答

0

這似乎令人難以置信的脆弱。我會建議只使用多個監聽器,每一個對話框:

private DialogInterface.OnClickListener mFirstListener = new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick (DialogInterface dialog, int which) { 
     //Handle first dialog 
    } 
}; 

private DialogInterface.OnClickListener mSecondListener = new DialogInterface.OnClickListener() { 
    @Override 
    public void onClick (DialogInterface dialog, int which) { 
     //Handle second dialog 
    } 
}; 

然後,只需按指定對話框中聽衆:

new AlertDialog.Builder(this) 
    .setTitle("First Dialog") 
    .setPositiveButton("Ok", mFirstListener) 
    .show(); 
+0

是的,我知道其他方式,從而例如很少聽衆(匿名或不),並使用它們。只是想找到另一種解決方案。 – AlpenDitrix

+0

這些幾乎是你的選擇。沒有任何標識信息會在事件中傳遞(沒有做一些不能保證的安全投射),因此您可以在應用程序中保持一些當前狀態(增加不必要的複雜性),或者只使用另一個監聽器。 – kcoppock