Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android对话框中出现空指针异常_Android - Fatal编程技术网

Android对话框中出现空指针异常

Android对话框中出现空指针异常,android,Android,我试图从对话框中获取一个返回值,并继续获取NPE。我有一个活动,屏幕上有一个按钮。单击该按钮时,会显示一个模式,其中有几个字段需要填写。当我试图将信息带回主要活动时,我的NPE崩溃了。代码如下: public class FilterActivity extends Activity { final Context context = this; @Override public void onCreate(Bundle savedInstanceState) {

我试图从对话框中获取一个返回值,并继续获取NPE。我有一个活动,屏幕上有一个按钮。单击该按钮时,会显示一个模式,其中有几个字段需要填写。当我试图将信息带回主要活动时,我的NPE崩溃了。代码如下:

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。很好。谢谢