【问题标题】:Android open SQLite Database in FragmentAndroid 在 Fragment 中打开 SQLite 数据库
【发布时间】:2020-07-14 07:27:16
【问题描述】:

我在 Android Studio java 的一个片段中,想在 SqlLite 数据库中保存和读取一些内容。为了保存,我只使用以下代码:

databaseHu = getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);
databaseHu.execSQL("CREATE TABLE IF NOT EXISTS " + Tabel_Hu_Name + "(subject TEXT, tasks TEXT, dayofyear INT, day INT, month INT, year INT)");
databaseHu.execSQL("INSERT INTO  " + Tabel_Hu_Name + " VALUES ('" + subject.getText().toString() + "','" + tasks.getText().toString() + "','" + c.get(Calendar.DAY_OF_YEAR) + "','" + c.get(Calendar.DAY_OF_MONTH) + "','" + c.get(Calendar.MONTH) + "','" + c.get(Calendar.YEAR) + "')");
databaseHu.close();

但是因为我在一个片段中,所以它标志着:

getBaseContext()

作为一个错误。 我该如何解决这个问题?提前致谢!

【问题讨论】:

  • 我曾经在android中使用sqlite open helper来处理sqlite,但是你可以尝试getActivty()而不是getBaseContext()吗??
  • 我试过getActivity()。这不起作用,然后应用程序在那里崩溃。
  • "( subject 在此处添加空格
  • 我试过了。但该应用程序在第一行关闭。 -> openOrCreateDatabas....
  • 你能把错误logcat贴出来吗?

标签: java android sql database fragment


【解决方案1】:

你可以像这样使用getActivity(),

databaseHu = getActivity().getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);

但它可能会调用 nullPtrException。相反,您可以覆盖此函数并像这样创建:

Activity activity;
@override
public void onViewCreated(View view, Bundle savedInstanceState) {
    if(getActivity()==null){
        activity = getActivity;
    }
}

那就这样用吧,

databaseHu = activity.getBaseContext().openOrCreateDatabase(databaseName_Notes, MODE_PRIVATE, null);

【讨论】:

  • 我应该写activity = getActivity(); ?因为否则它会在 =getActivity; 上出错
猜你喜欢
  • 1970-01-01
  • 2012-03-23
  • 2014-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多