需要解释: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
我是 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