Android对话框中出现空指针异常
我试图从对话框中获取一个返回值,并继续获取NPE。我有一个活动,屏幕上有一个按钮。单击该按钮时,会显示一个模式,其中有几个字段需要填写。当我试图将信息带回主要活动时,我的NPE崩溃了。代码如下:Android对话框中出现空指针异常,android,Android,我试图从对话框中获取一个返回值,并继续获取NPE。我有一个活动,屏幕上有一个按钮。单击该按钮时,会显示一个模式,其中有几个字段需要填写。当我试图将信息带回主要活动时,我的NPE崩溃了。代码如下: public class FilterActivity extends Activity { final Context context = this; @Override public void onCreate(Bundle savedInstanceState) {
public class FilterActivity extends Activity {
final Context context = this;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_filter);
Button addFilter = (Button) findViewById(R.id.addFilter);
addFilter.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final EditText et = (EditText) findViewById(R.id.filterName);
LayoutInflater inflater = LayoutInflater.from(context);
View dialog_layout = inflater.inflate(
R.layout.dialog_create_filter, null);
AlertDialog.Builder db = new AlertDialog.Builder(
FilterActivity.this);
db.setView(dialog_layout);
db.setTitle("Create Filter");
db.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
et.getText().toString();
}
});
db.show();
}
});
}
}
当我试图从中获取值时,EditText(et)仍然为空。我做错了什么?谢谢。您必须添加
db.findViewById(R.id.filterName)代码>如下所示
final EditText et = (EditText) db.findViewById(R.id.filterName);
代替
final EditText et = (EditText) findViewById(R.id.filterName);
完整代码:
LayoutInflater inflater = LayoutInflater.from(context);
View dialog_layout = inflater.inflate(
R.layout.dialog_create_filter, null);
AlertDialog.Builder db = new AlertDialog.Builder(
FilterActivity.this);
db.setView(dialog_layout);
final EditText et = (EditText) db.findViewById(R.id.filterName);
db.setTitle("Create Filter");
db.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
et.getText().toString();
}
});
db.show();
R.id.filterName位于哪里
它是否位于“创建过滤器”对话框中
然后,只有在对对话框进行充气并将对话框的布局视图用作父视图后,才应调用findViewById
请看这里:
希望这有帮助,Yaron显示logcat输出!请发布对话框的XML。是否检查了活动中是否有提供给edittext的ID?过滤器布局将edittext findViewById()代码置于onClick()之外,然后重试。实际上,构建器上没有附加findViewById方法,但我可以创建一个对话框并使用findViewById获取我的edittext。很好。谢谢