android - 需要解释 : getText() throws error on getActitvity()ut not on view

标签 android android-alertdialog android-dialogfragment

我是 android 开发的初学者,希望得到以下解释,

我正在尝试在自定义对话框中获取用户输入。下面的代码有效。但是如果我更换

final EditText editText = (EditText) view.findViewById(R.id.editText);

final EditText editText = (EditText) getActivity().findViewById(R.id.editText);

我在 setPositiveButton() 的 getText() 语句中得到 nullPointerException。

此外,任何关于为什么我在声明时但在阅读文本 (getText()) 时没有出错的解释都将不胜感激。

public class FireMissilesDialogFragment extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    LayoutInflater layoutInflater = getActivity().getLayoutInflater();
    View view = layoutInflater.inflate(R.layout.edit_menu, null);

    final EditText editText = (EditText) view.findViewById(R.id.editText);
    builder.setView(view)
            .setMessage("Fire food missile?")
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getActivity(), editText.getText().toString(), Toast.LENGTH_SHORT).show();
                }
             })
            .setNegativeButton("No", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    Toast.makeText(getActivity(), "Why not?", Toast.LENGTH_SHORT).show();
                }
            });
    return builder.create();
}

最佳答案

i get nullPointerException at getText() statement in setPositiveButton().

In addition, any explanation of why i don't get error while declaring but while reading the text (getText()) would be appreciated

findViewById 在第二种情况下返回 null,因为您要查找的小部件 TextView 属于您扩充并设置为对话框 View 的布局而不是 Activity 的 Activity 。由于返回的引用为 null,当您尝试访问其成员之一时,getText() 在这种情况下,将抛出 NullPointerException

关于android - 需要解释 : getText() throws error on getActitvity()ut not on view,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31733267/

相关文章:

android - 没有 url 的 TextView 上的超链接未显示且不可单击

java - 无法从扩展 DialogFragment 的类创建默认构造函数,我已经创建了自己的自定义构造函数

android - Dialog 在膨胀之前从 Activity 中删除 fragment

android - 跟踪来自 Android 原生浏览器的 http 请求

android - 谷歌播放服务 : how to handle peers network disconnection?

c# - 将 RAW 字节数据转换为位图

android - 如何使用 Dialogfragment 和 ArrayAdapter 创建列表对话框来填充 Java 类中的项目?

Android InputMethodService 按键滑动语言更改

java - 删除 AlertDialog 的昏暗持续时间

java - AlertDialog 不显示文件列表