如何从EditText插入文本到数据库中?

我试图从editText中获取文本并将其输入到我的数据库中。一旦我尝试提交文本,我遇到的问题就是NullPointerException。任何帮助,将不胜感激。如何从EditText插入文本到数据库中?

错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 

这是从我的MainActivity:

public boolean onOptionsItemSelected(MenuItem item) { 

switch (item.getItemId()){

case R.id.action_add_task:

final EditText text = (EditText)findViewById(R.id.editText);

AlertDialog dialog = new AlertDialog.Builder(this)

.setTitle("Add New Task")

.setMessage("what do you want to do next")

.setView(R.layout.custom_view)

.setPositiveButton("Add", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

String task;

task = text.getText().toString();

dbHelper.insertNewTask(task);

if(getFragmentRefreshListener()!=null) {

getFragmentRefreshListener().onRefresh();

}

loadTaskList();

}

})

.setNegativeButton("Cancel",null)

.create();

dialog.show();

return true;

}

return super.onOptionsItemSelected(item);

}

我custom_view.xml:

<EditText 

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="Enter a task"

android:id="@+id/editText" />

我activity_main.xml中:

<android.support.design.widget.TabLayout 

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/tablayout"

android:background="@color/colorPrimaryDark"

android:minHeight="?attr/actionBarSize"

>

</android.support.design.widget.TabLayout>

<android.support.v4.view.ViewPager

android:id="@+id/pager"

android:layout_width="match_parent"

android:layout_height="fill_parent"

android:backgroundTint="@android:color/darker_gray"

android:visibility="visible">

<ListView

android:id="@+id/lstTask"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_alignParentStart="true"

android:layout_alignParentTop="true"

android:text="@string/tasks"

android:textSize="30sp" />

</android.support.v4.view.ViewPager>

回答:

好,因为我不能看到XML为MainActivity布局,这就是最有可能是造成的NPE。

final EditText text = (EditText)findViewById(R.id.editText); 

你搜索你的活动视图层次您编辑文本时,你应该在对话视图层次来寻找它(从什么是在对话创造出假设)。

 .setView(R.layout.custom_view) 

在那里您将该视图设置为对话框的视图,这可能是什么导致了异常。尝试澄清的参考编辑文本在onclick方法是这样的:

AlertDialog dialog = new AlertDialog.Builder(this) 

.setTitle("Add New Task")

.setMessage("what do you want to do next")

.setView(R.layout.custom_view)

.setPositiveButton("Add", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

final EditText text = ((AlertDialog)dialog).findViewById(R.id.editText);

String task;

task = text.getText().toString();

dbHelper.insertNewTask(task);

if(getFragmentRefreshListener()!=null) {

getFragmentRefreshListener().onRefresh();

}

loadTaskList();

}

})

.setNegativeButton("Cancel",null)

.create();

dialog.show();

回答:

以下是固定我的问题:

我改变了这一行:

final EditText text = ((AlertDialog)dialog).findViewById(R.id.editText); 

要这样:

final EditText text = (EditText) ((AlertDialog)dialog).findViewById(R.id.editText); 

以上是 如何从EditText插入文本到数据库中? 的全部内容, 来源链接: utcz.com/qa/258641.html

回到顶部