Android 空指针异常-警报对话框中的表单

Android 空指针异常-警报对话框中的表单,android,android-edittext,android-alertdialog,Android,Android Edittext,Android Alertdialog,每当我单击对话框中的“确定”按钮时,就会遇到空指针异常 public class TestActivity extends ListActivity { private Context context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = this;

每当我单击对话框中的“确定”按钮时,就会遇到空指针异常

public class TestActivity extends ListActivity {

    private Context context;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        context = this;
        setContentView(R.layout.activity_bucket_crud);

    }

    public void addTestItem(View view) {
        LayoutInflater inflater = getLayoutInflater();
        new AlertDialog.Builder(this)
            .setTitle("Add Item")
            .setIcon(R.drawable.add)
            .setView(inflater.inflate(R.layout.activity_bucket_crudadd, null))
            .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    EditText text = (EditText)findViewById(R.id.editTextAdd);
                    DatabaseHandler myDbHelper = new DatabaseHandler(context);
                    myDbHelper.insertItem(text.getText().toString());
                }
            })
            .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int whichButton) {
                    dialog.cancel();
                }
            }).show();
    }

}
这里是错误

01-05 09:20:35.052: E/AndroidRuntime(761): FATAL EXCEPTION: main
01-05 09:20:35.052: E/AndroidRuntime(761): java.lang.NullPointerException
01-05 09:20:35.052: E/AndroidRuntime(761):  at com.example.test.TestActivity$1.onClick(TestActivity.java:65)
01-05 09:20:35.052: E/AndroidRuntime(761):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:166)
我的布局是这样的

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="150dp">

    <EditText
        android:id="@+id/editTextAdd"
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:ems="10"
        android:inputType="textMultiLine"
        android:layout_margin="5dp" 
        android:padding="3dp">

        <requestFocus />
    </EditText>

</RelativeLayout>
这是不是因为行指向
(text.getText().toString()
)而导致空指针的原因?如果是,如何获取文本的值


谢谢

您无法在对话框侦听器的
OnClick()
方法中创建EditText实例。请将EditText实例创建为全局对象,并在将其插入数据库时使用引用。
findViewById()
方法只能在子活动中使用,当您试图在其他类/接口中使用时,上下文将被更改

或者,您可以尝试以下代码:

EditText text = (EditText)TestActivity.this.findViewById(R.id.editTextAdd);

无法在对话框侦听器的
OnClick()
方法内创建EditText实例。请将EditText实例创建为全局对象,并在将其插入数据库时使用引用。
findViewById()
方法只能在子活动中使用,当您试图在其他类/接口中使用时,上下文将被更改

或者,您可以尝试以下代码:

EditText text = (EditText)TestActivity.this.findViewById(R.id.editTextAdd);

因为
EditText
NULL。您不是从对话框布局中引用
EditText

把你的台词改一下,告诉我发生了什么

 EditText text = (EditText) dialog.findViewById(R.id.editTextAdd);
要从对话框布局中获取
EditText
引用,必须使用
Dialog
reference和
findViewById()
方法

更新:

LayoutInflater inflater = getLayoutInflater();
View view = null;
view  = inflater.inflate(R.layout.activity_bucket_crudadd, null);
        new AlertDialog.Builder(this)
            .setTitle("Add Item")
            .setIcon(R.drawable.add)
            .setView(view)
现在访问编辑文本,如

EditText text = (EditText) view.findViewById(R.id.editTextAdd);

因为
EditText
NULL。您不是从对话框布局中引用
EditText

把你的台词改一下,告诉我发生了什么

 EditText text = (EditText) dialog.findViewById(R.id.editTextAdd);
要从对话框布局中获取
EditText
引用,必须使用
Dialog
reference和
findViewById()
方法

更新:

LayoutInflater inflater = getLayoutInflater();
View view = null;
view  = inflater.inflate(R.layout.activity_bucket_crudadd, null);
        new AlertDialog.Builder(this)
            .setTitle("Add Item")
            .setIcon(R.drawable.add)
            .setView(view)
现在访问编辑文本,如

EditText text = (EditText) view.findViewById(R.id.editTextAdd);

对话框中没有findViewById方法?对话框中没有findViewById方法?@newbie您是否尝试将EditText声明为全局变量?仍然没有work@newbie您是否尝试过将EditText声明为全局变量?仍然不起作用