2013-04-19 10 views
9

Ich erstelle eine Alertdialogerfrischen oder die Nachricht Alertdialog ändern

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
... 
AlertDialog alert = builder.create(); 
alert.show(); 

nach einem Moment, wo ich ohne Schließen sie die Nachricht Alertdialog ändern möchten.

ist es möglich?

Antwort

6

Ja, Sie können.

Wenn Sie beispielsweise einen eigenen Dialog mit einem eigenen Layout erstellen, können Sie für jede der Ansichten eine ID festlegen und dann auf jede davon zugreifen (z. B. die textView) und den neuen Text jederzeit festlegen zu.

+0

Für mich funktioniert es nicht: Verwenden von 'TextView messageView = (TextView) dialog.findViewById (android.R.id.message); messageView.setText ("MyText"); 'nach dem Aufruf von' dialog.show() 'ändert den Text nicht. – user905686

+0

Wieder schrieb ich "mit Ihrem eigenen Layout". Für andere Lösungen funktionieren sie möglicherweise nicht gut. –

10

Einverstanden mit Android-Entwickler. Sie können auch

TextView messageView = (TextView)alert .findViewById(android.R.id.message); 

verwenden, um die Kontrolle über die messageTextView von AlertDialog zu erhalten. Dann können Sie den neuen Text dort einstellen.

+0

hast du diese Methode auch ausprobiert? – stinepike

+1

Dies funktioniert nicht. @ Danger's Antwort ist die richtige und es ist schöner, verwenden Sie nur alert.setMessage() anstelle von builder.setMessage(). – qwlice

0

Set OnClickListener aus Haupt-Setter wie folgt aus:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()) 
         .setTitle(getResources().getString(R.string.dialog_title)) 
         .setMessage("Waiting ...") 
         .setNeutralButton(R.string.check, null); 

AlertDialog alertDialog = alertDialogBuilder.create(); 
alertDialog.show(); 

Button b_neutral = alertDialog.getButton(DialogInterface.BUTTON_NEUTRAL); 
b_neutral.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View view) { 
         TextView tv_message = (TextView) alertDialog.findViewById(android.R.id.message); 
         tv_message.setText("Works ..."); 
    } 
}); 
6

Verwendung alert.setMessage() anstelle von builder.setMessage() Anruf alert.setMessage() und Set-Meldung Ihres Dialog jederzeit Sie wollen.

+2

Das ist die Antwort! – qwlice

+0

Es ist wichtig zu beachten, dass 'alert.setMessage()' ** nicht funktionieren wird, es sei denn, Sie haben mindestens '' AlertDialog.Builder' 'builder.setMessage()' '' '' '' '' (null) aufgerufen 'Eingabe funktioniert auch nicht). Es ist ein bekanntes Problem, siehe Problem unter [https://issuetracker.google.com/issues/36913966](https://issuetracker.google.com/issues/36913966] – Eido95

+0

Problem wurde ursprünglich vor Android 2.3 gemeldet. Aufgrund der vielen Änderungen, die in Android 4.x im Vergleich zu früheren Versionen aufgetreten sind, ist es sehr wahrscheinlich, dass dieses Problem in den letzten Versionen von Android wie 4.2.2 oder neuer nicht existiert. – Danger

Verwandte Themen