Android的dialoginterface获取内部对话框的意见

我有一个简单的程序来显示一个对话框,其中包含一个edittext视图,并听取正面/负面的button,以在每个(执行edittext并将其内容保存到活动variables中)执行自定义操作。

当我看不到从对话框界面恢复当前对话框的任何方法(然后,我无法恢复对话框中的任何视图)时出现问题。

也许这是一个noob问题,但经过一些谷歌search,我没有人回答它。

我的代码如下

LayoutInflater li = LayoutInflater.from(this); View myView = li.inflate(R.layout.my_layout, null); AlertDialog.Builder cDialog = new AlertDialog.Builder(this); cDialog.setView(myView); cDialog.setPositiveButton(R.string.start_download, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //here the code to retrieve dialog } }); cDialog.create(); 

任何线索我在哪里可以find?

Solutions Collecting From Web of "Android的dialoginterface获取内部对话框的意见"

您可以使用onClick()Dialog中检索视图:

 EditText edit = (EditText) ((AlertDialog) dialog).findViewById(R.id.the_id_of_view); 

这种方式在我的代码中运行完美:

 public void onClick(DialogInterface dialog, int which) { Dialog dialog2 =Dialog.class.cast(dialog); EditText edit = (EditText) dialog2.findViewById(R.id.myedittext); } 

干杯

您已经参考了具有编辑文本的视图。 为什么不直接使用它? 只要确保您使视图最终,以便您可以在OnClickListener匿名类访问它。

 LayoutInflater li = LayoutInflater.from(this); final View myView = li.inflate(R.layout.my_layout, null); // don't forget to mark myView as final AlertDialog.Builder cDialog = new AlertDialog.Builder(this); cDialog.setView(myView); cDialog.setPositiveButton(R.string.start_download, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //here the code to retrieve dialog EditText edit = (EditText) myView.findViewById(R.id.the_id_of_view); } }); cDialog.create(); 

你可以得到方法show() alertBuidler返回的对话框。

 AlertDialog.Builder adb = new AlertDialog.Builder(YourActivity.this); //...code to add methods setPositive an setNegative buttons 

调用adbshow()方法,并获取如下的Dialog

 final AlertDialog dialog = adb.show(); 

所以你可以在你的活动的任何代码点调用你的对话框的任何button:

 dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick();//or dialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();//or dialog.getButton(DialogInterface.BUTTON_NEUTRAL).performClick();