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声明为全局变量?仍然不起作用