java - Android 在 Fragment 中打开 SQLite 数据库
问题描述
我在 Android Studio java 的一个片段中,想在 SqLite 数据库中保存和读取一些东西。为了保存,我只使用以下代码:
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()
作为一个错误。我该如何解决这个问题?提前致谢!
解决方案
您可以像这样使用 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);
推荐阅读
- reactjs - 将数组传递给组件
- java - 带有 Maven 的 Oracle JDBC 项目:在 IDE 中运行良好,但在命令行中运行 ClassNotFoundException
- android - Align Alignment.bottomCenter 在 Row 中没有帮助
- arduino - arduino,使用 SD 配置文件中的数据设置以太网和网络
- python - 如何使用 matplotlib ArtistAnimation 绘制直方图或条形动画?
- haskell - haskell中类型的函数应用程序操作数($)?
- matlab - 在 MATLAB 上使用持久变量
- python - 使用 pdfrw 处理后无法移动/删除 PDF
- javascript - JavaScript:每列生成表列
- npm - JFrog 私有注册表无法 npm 安装