Вы можете сделать это по-разному ... на самом деле, если в вашем диалоговом окне есть только кнопка "ОК" для отмены, почему бы вам просто не создать собственный диалог, используя класс AlertDialog.Builder
вместо подкласса Dialog
?
В любом случае ... предположим, у вас есть веские причины сделать это так, как вы это сделали.В этом случае я бы использовал ObserverPattern.Примерно так:
public class CustomDialog extends Dialog {
private String name;
public static EditText etName;
public String zip;
OnMyDialogResult mDialogResult; // the callback
public CustomDialog(Context context, String name) {
super(context);
this.name = name;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// same you have
}
private class OKListener implements android.view.View.OnClickListener {
@Override
public void onClick(View v) {
if( mDialogResult != null ){
mDialogResult.finish(String.valueOf(etName.getText()));
}
CustomDialog.this.dismiss();
}
}
public void setDialogResult(OnMyDialogResult dialogResult){
mDialogResult = dialogResult;
}
public interface OnMyDialogResult{
void finish(String result);
}
}
На вашей активности:
CustomDialog dialog;
// initialization stuff, blah blah
dialog.setDialogResult(new OnMyDialogResult(){
public void finish(String result){
// now you can use the 'result' on your activity
}
});
Читая ваш код, кажется, вы уже пробовали что-то подобное.
Редактировать: сделать это простым способом
Вы все еще можете использовать свой макет mycustomdialog
.И вот как бы вы использовали AlertDialog.Builder
:
LayoutInflater inflater = LayoutInflater.from(YourActivity.this);
final View yourCustomView = inflater.inflate(R.layout.mycustomdialog, null);
final TextView etName = (EditText) yourCustomView.findViewById(R.id.EditZip);
AlertDialog dialog = new AlertDialog.Builder(YourActivity.this)
.setTitle("Enter the Zip Code")
.setView(yourCustomView)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
mSomeVariableYouHaveOnYourActivity = etName.getText().toString();
}
})
.setNegativeButton("Cancel", null).create();
dialog.show();