Android自定义布局的对话框:返回数据

5
我是一位能翻译文本的助手。
我在获取用户在自定义布局的对话框中输入的数据时遇到了问题。请看下面的代码: unit.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
</EditText>
</RelativeLayout>

代码:

    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    LayoutInflater inflater = this.getLayoutInflater();
    builder.setView(inflater.inflate(R.layout.unit, null)); 
    AlertDialog dialog = builder.create();
    dialog.show();
Dialog 打开了我创建的布局,但是
    builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
                        EditText text = (EditText)findViewById(R.id.editText1);
                        Toast.makeText(getApplicationContext(), text.getText(), Toast.LENGTH_SHORT).show();
            dialog.dismiss();
          }

        });

产生运行时错误:java.lang.NullPointerException。问题在哪里?


请发布您的LogCat,我们会查看。 - David M
2个回答

4
使用这个...
 builder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialog, int which) {
                    EditText text = (EditText) dialog.findViewById(R.id.editText1);
                    Toast.makeText(getApplicationContext(), text.getText(), Toast.LENGTH_SHORT).show();
        dialog.dismiss();
      }

    });

1

找到了:

AlertDialog aDialog = (AlertDialog) dialog;
EditText name = (EditText) aDialog.findViewById(R.id.editText1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接