从EditText获取用户输入,从SQLite数据库中查询该单词并填充结果

时间:2016-01-16 15:16:49

标签: android sqlite

我正在学习编程并尝试使用Android Studio开发非常基本的Dictionary应用程序。

在应用程序运行时创建的数据库和表,并且能够使用以下查询填充数据。 Cursor res = db.rawQuery("select * from " + TABLE_NAME + " WHERE WORD = 'home' ", null);

问题是, 在 MainActivity 类中,我创建了一个方法

public EditText getEditText(){
    EditText getText = (EditText)findViewById(R.id.editText_SearchWords);
    return getText;
}

DatabaseHelper 类。

public Cursor getWord() {
    MainActivity obj = new MainActivity();
    EditText searchWord = obj.getEditText();
    String word = searchWord.getText().toString();

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery("select * from " + TABLE_NAME + " WHERE WORD ="+word, null);
    return res;
}

然而,在实现上述查询和方法之后,App崩溃并且什么都不做。它已经玩了一个星期,无法找出问题所在。在我的学习中,任何帮助都会得到很大的支持。

1 个答案:

答案 0 :(得分:0)

您无法创建新的主活动对象并从中拉出视图。 如果你从Activity内部调用getWord(),那么尝试将文本作为参数传入,因为你可以访问那里的EditText。

即使您从活动中调用该方法并修复该方法,也不应该从您的活动线程访问该数据库。

查看使用CursorLoader: http://developer.android.com/training/load-data-background/setup-loader.html

或者调用运行查询的AsycTask并返回响应:

http://developer.android.com/reference/android/os/AsyncTask.html