2013-04-19 15 views

risposta

6

Sì, è possibile.

Ad esempio, se si crea la propria finestra di dialogo, con il proprio layout, è possibile impostare un id per ciascuna vista, quindi accedere a ciascuno di essi (ad esempio la vista testo) e impostare il nuovo testo ogni volta che lo si desidera a.

+0

Per me non funziona: utilizzando 'TextView messageView = (TextView) dialog.findViewById (android.R.id.message); messageView.setText ("MyText"); 'dopo aver chiamato' dialog.show() 'non cambia il testo. – user905686

+0

Ancora una volta, ho scritto "con il proprio layout". Per altre soluzioni, potrebbero non funzionare bene. –

10

Concordato con lo sviluppatore Android. È inoltre possibile utilizzare

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

Per ottenere il controllo del messaggioTextView di AlertDialog. Quindi puoi impostare il nuovo testo lì.

+0

hai provato anche questo metodo? – stinepike

+1

Questo non funziona. @ La risposta di Danger è quella corretta ed è più carina, usa solo alert.setMessage() invece di builder.setMessage(). – qwlice

0

Set OnClickListener di setter principale in questo modo:

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

Usa alert.setMessage() al posto di builder.setMessage() chiamata alert.setMessage() e impostare il messaggio della vostra finestra di dialogo in qualsiasi momento volere.

+2

questa è la risposta! – qwlice

+0

È importante notare che 'alert.setMessage()' ** non funzionerà a meno che ** almeno tu abbia chiamato il suo 'AlertDialog.Builder'' builder.setMessage() 'prima con' "" input ('null l'input non funzionerà anche). Si tratta di un problema noto, consulta il problema all'indirizzo [https://issuetracker.google.com/issues/36913966](https://issuetracker.google.com/issues/36913966) – Eido95

+0

Il problema era originariamente segnalato prima di Android 2.3. A causa delle numerose modifiche esistenti in Android 4.x rispetto alle versioni precedenti, è molto probabile che questo problema non esista nelle versioni recenti di Android come 4.2.2 o più recenti. – Danger

Problemi correlati