Android对话框接口获取内部对话框视图

use*_*817 30 android dialog

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

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

可能这是一个菜鸟问题,但经过一些谷歌搜索,我没有人回答它.

我的代码如下

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();
Run Code Online (Sandbox Code Playgroud)

关于我在哪里可以找到的任何线索?

Luk*_*rog 72

你可从该视图DialogonClick()有:

EditText edit = (EditText) ((AlertDialog) dialog).findViewById(R.id.the_id_of_view);
Run Code Online (Sandbox Code Playgroud)

  • @ user1220817那个`dialog`参数是收到点击的对话框.将它转换为`AlertDialog`,然后像这样调用`findViewById()`:`EditText edit =(EditText)((AlertDialog)对话框).findViewById(R.id.editText1);`. (2认同)

use*_*r23 14

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

public void onClick(DialogInterface dialog, int which) {

   Dialog dialog2 =Dialog.class.cast(dialog);
   EditText edit = (EditText) dialog2.findViewById(R.id.myedittext);

}
Run Code Online (Sandbox Code Playgroud)

干杯


Ani*_*kur 11

您已经引用了包含编辑文本的视图.为什么不直接使用它?只需确保将视图设为最终,以便您可以在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();
Run Code Online (Sandbox Code Playgroud)