【发布时间】:2020-05-29 10:03:03
【问题描述】:
错误是当我在模拟器上运行我的代码时,应用程序停止并出现错误(java.lang.RuntimeException:无法启动活动: java.lang.NullPointerException:在代码@987654321 中尝试在空对象引用上调用虚拟方法'java.io.File android.content.Context.getDatabasePath(java.lang.String)' @
我的片段:
public class FragmentHome extends Fragment {
private List<ItemRecipe> itemList = new ArrayList<>();
private RecyclerView recyclerView;
private RecipeAdapter mAdapter;
private AppCompatActivity appCompatActivity;
databaseHelper db = new databaseHelper(getActivity());
public FragmentHome() {
setHasOptionsMenu(true);
}
public void onCreate(Bundle a) {
super.onCreate(a);
setHasOptionsMenu(true);
}
sqldatabasehelper:
public class databaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "recipes.db";
public static final String DATABASE_location = Environment.getDataDirectory()+"data/com.recipes.cook/databases/";
private Context mcontext ;
private SQLiteDatabase mdatabase;
public databaseHelper( Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
}
public void openDatabase(){
String dbpath =mcontext.getDatabasePath(DATABASE_NAME).getPath();
if (mdatabase != null && mdatabase.isOpen()){
return;
}
mdatabase=SQLiteDatabase.openDatabase(dbpath,null,SQLiteDatabase.OPEN_READWRITE);
}
public void closeDatabase() {
if (mdatabase != null) {
mdatabase.close();
}
}
public ArrayList<ItemRecipe> get_all_name (){
ItemRecipe itemRecipe=null;
ArrayList<ItemRecipe> recipslist=new ArrayList<>();
openDatabase();
Cursor res = mdatabase.rawQuery("select * from recipes",null);
res.moveToFirst();
while(!res.isAfterLast()){
String recipe =res.getString(res.getColumnIndex("name"));
String img=res.getString(res.getColumnIndex("image"));
String time = res.getString(res.getColumnIndex("time"));
int rating = res.getInt(res.getColumnIndex("rating"));
res.moveToNext();
recipslist.add(
new ItemRecipe(
recipe,img,time,rating
)
);
}
res.close();
closeDatabase();
return recipslist;
}
【问题讨论】:
标签: java android database sqlite