我正在学习编程并尝试使用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崩溃并且什么都不做。它已经玩了一个星期,无法找出问题所在。在我的学习中,任何帮助都会得到很大的支持。
答案 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