2017-03-04 2 views
0

zurückgeben Ich möchte den AlertDialog in eine Funktion kapseln, so dass ich meinen Code lesbarer und durcheinander frei machen kann. Aber ich bin nicht in der Lage diese Funktion machen das Ergebnis zurückzukehrenWie kann ich das Ergebnis von Funktion in 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; 
} 

Wie konnte ich das Ergebnis zurück, so kann ich diese Funktion als

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

Antwort

0

Es ist async und Sie sollten es halten so. Sie können eine erstellen und diese in Ihre Methode übernehmen. This'd Ihre Schnittstelle:

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

Ihre aktualisierte Methode:

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(); 
} 

, es zu benutzen, würden Sie so etwas tun:

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

Ihnen danken. funktionierte gut mit kleinen Änderungen, wie final messagingboxListener listener und MainActivity.this statt dessen. – Angelica

Verwandte Themen