escribo un diálogo personalizado y tratar de obtener algunos datos de su actividad principal, pero siempre me sale nula cuando llamo getOwnerActivity, podría alguien decirme por qué sucede esto? ¿Por qué puedo mostrar los datos en DemoDialog mientras no puedo mostrar los datos de TestDialogActivity?getOwnerActivity devuelve un valor nulo en el cuadro de diálogo personalizado
Muchas gracias de antemano.
DialogTestActivity
public class DialogTestActivity extends Activity {
List<String> data = new ArrayList<String>();
Button button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
showDialog(0);
}
});
}
public List<String> getData(){
data.add("one");
data.add("two");
data.add("three");
return data;
}
public Dialog onCreateDialog(int id){
return new DemoDialog(this);
}
}
DemoDialog
public class DemoDialog extends Dialog {
Context context;
public DemoDialog(Context context) {
super(context);
setContentView(R.layout.dialog);
this.context = context;
setTitle("Delete City");
ListView list = (ListView)findViewById(R.id.list);
ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, ((DialogTestActivity)getOwnerActivity()).getData());
// ArrayAdapter<String> aa = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_multiple_choice, getData());
list.setAdapter(aa);
list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
private List<String> getData(){
List<String> data = new ArrayList<String>();
data.add("1");
data.add("2");
return data;
}
}
Nota: me refiero a la llamada onCreate() del cuadro de diálogo. Sin embargo, es posible que deba colocarlo en AttachedToWindow() si eso falla, porque Android de hecho puede diferir su magia arbitrariamente. Dicho eso, si necesita acceder al propietario desde el constructor, el propietario es "context", así que simplemente use "context" :) – Sajid
Gracias por su respuesta, Sajid. Traté de seguir tu sugerencia pero sentll nulo, ¿podrías compartir tu código? – eric2323223
Agregado como una edición anterior. Después de todo, debe registrarse en AttchToWindow(). – Sajid