需要解释:getText() 在 getActivity() 上抛出错误,但不在视图上

Need explanation: getText() throws error on getActitvity()ut not on view

我是 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 属于您扩充并设置为对话框视图的布局,而不是Activity的一个。由于返回的引用为 null,当您尝试访问其成员之一时,在本例中为 getText(),将抛出 NullPointerException