2017-03-04 16 views
0

我想將AlertDialog封裝到一個函數中,這樣我就可以讓我的代碼更具可讀性和雜亂無章。但我無法使這個函數返回的結果我怎麼能從android中的函數返回結果

public int ShowMessageBox(Context context, String title, String message){ 
    int result; 
    new AlertDialog.Builder(context) 
      .setTitle(title.toString()) 
      .setMessage(message.toString()) 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        result = 1; //error here 
        //dialogInterface.cancel(); 
       } 
      }) 

      .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        result = 2; //error here 
        //dialogInterface.dismiss(); 
       } 
      }) 
      .show(); 
    return result; 
} 

我怎麼能返回的結果,所以我可以使用此功能

int i = ShowMessageBox(MainActivity.this, "Title", "Message"); 
if (i == 1) 
    do this 
else if (i == 2) 
    do that 

回答

0

這是異步,你應該保持這樣的。您可以製作Interface並將其傳遞到您的方法中。 This'd是你的接口:

public interface MessageBoxListener { 
    void result(int result); 
} 

您更新方法:

public void showMessageBox(Context context, String title, String message, final MessageBoxListener listener) { 
    new AlertDialog.Builder(context) 
     .setTitle(title.toString()) 
     .setMessage(message.toString()) 
     .setCancelable(false) 
     .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       listener.result(1); 
       //dialogInterface.cancel(); 
      } 
     }) 
     .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       listener.result(2); 
       //dialogInterface.dismiss(); 
      } 
     }) 
     .show(); 
} 

要使用它,你會做這樣的事情:

showMessageBox(MainActivity.this, "Title", "Message", new MessageBoxListener() { 
    @Override 
    public void result(int result) { 
     if (result == 1) 
      // Do something 
     else 
      // Do something else 
    } 
}); 
+0

謝謝。如果最終的messageboxListener監聽器和MainActivity.this代替這個,就可以很好地工作。 – Angelica

相關問題