微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 来自AlertDialog的findViewById(带自定义布局) – NullPointerException

我正在尝试从AlertDialog中的EditTexts中获取文本,这可以在下面看到创建.问题是,我无法检索textviews.我得到的只是一个空值.有任何想法吗?

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();
        }
    });
}

}

解决方法

您需要在视图中搜索您为“警报”对话框充气,例如您膨胀的视图如下所示:

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实际所在的位置,它试图查看当前视图的内部,它不包含EditText.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐