Si el idioma de Android 2.2 (API nivel 8 o superior) se puede utilizar
public final boolean showDialog (int id, Bundle args)
y pasar sus argumentos en Bundle
. Ver documentation.
Si desea admitir versiones anteriores de Android, debe guardar sus argumentos en Activity
miembros de la clase y luego acceder a ellos desde su función onPrepareDialog
. Tenga en cuenta que onCreateDialog
no se ajustará a sus necesidades, ya que se llama solo una vez para la creación de diálogos.
class MyActivity {
private static int MY_DLG = 1;
private String m_dlgMsg;
private showMyDialog(String msg){
m_dlgMsg = msg;
showDialog(MY_DLG);
}
private doSomething() {
...
showMyDlg("some text");
}
protected void onCreateDialog(int id){
if(id == MY_DLG){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
....
return builder.create();
}
return super.onCreateDialog(id);
}
@Override
protected void onPrepareDialog (int id, Dialog dialog){
if(id == MY_DLG){
AlertDialog adlg = (AlertDialog)dialog;
adlg.setMessage(m_dlgMsg);
} else {
super.onPrepareDialog(id, dialog);
}
}
}
impresionante, suena bien :) El único problema es que cuando usted tiene, por lo que no parece doSomething() Estoy llamando showDialog desde dentro de un evento de clic en línea, que se pasa a través de los valores, i' No estoy seguro de por qué ... – jsw
'showDialog (int id, Bundle args)' obsoleto en la API 13 –