android - 来自 AlertDialog 的 findViewById(使用自定义布局)- NullPointerException

标签 android

我正在尝试从 AlertDialog 中的 EditTexts 中获取文本,它的创建如下所示。问题是,我无法检索 TextView 。我得到的只是一个空值。有任何想法吗?

    final EditText editFirstname = (EditText) findViewById(R.id.editFirstname);
    final EditText editLastname = (EditText) findViewById(R.id.editLastname);

    bttAddPlayer.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            AlertDialog.Builder builder = new AlertDialog.Builder(context);

            LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            builder.setView(layoutInflater.inflate(R.layout.dialog_add_player, null))
                    .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int id) {
                            databaseHelper.addPlayer(editFirstname.getText().toString(),editLastname.getText().toString());
                            playerAdapter.notifyDataSetChanged();
                        }
                    })
                    .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                        }
                    });
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
        }
    });
}

最佳答案

您需要在您为 Alert 对话框扩充的 View 中搜索,假设您扩充的 View 如下:

    View view = inflater.inflate(R.layout.dialog_add_player, container);

那么你需要做

EditText editFirstName = (EditText) view.findViewById(R.id.editFirstName);
EditText editLastName  = (EditText) view.findViewById(R.id.editLastName);

看起来你现在正试图为不存在的东西实例化一个变量,你没有引用 EditText 的实际位置,它试图查看当前 View 的内部,其中不包含 EditText

关于android - 来自 AlertDialog 的 findViewById(使用自定义布局)- NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24498182/

相关文章:

Android Studio 1.0 RC 1 Gradle 构建问题 - 无法使用 Gradle 安装运行构建操作

java - 当我尝试使用图像按钮进入第二个 Activity 时应用程序崩溃

Android App 备用市场或地点

android - 如何截断 TextView,在 Android Studio 中的 TextView 末尾留下一定数量的字符?

android - Android 中 startActivityForResult() 背后的机制是什么?

android - 当尝试从带有点击事件的 View 滚动时,滚动在 NestedScrollView 中不起作用

java - 当设备中安装了 .apk 时,谷歌地图无法工作

android - 使用 android elevation 应用阴影

java - Android/Java创建帮助程序类以创建图形

android - 水平单选按钮的大分布