Java 将数据从数据库显示到文本视图(Android)

Java 将数据从数据库显示到文本视图(Android),java,android,Java,Android,这是我的数据库类代码(DatabaseHelper.java) 这是另一个类(mainsupposition.java) 公共类菜单建议扩展AppCompative活动{ 数据库助手myDb; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity\u菜单\u建议); Cursor res=myDb.getAllData();

这是我的数据库类代码(DatabaseHelper.java)

这是另一个类(mainsupposition.java)

公共类菜单建议扩展AppCompative活动{
数据库助手myDb;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u菜单\u建议);

Cursor res=myDb.getAllData(); 如果(res.moveToFirst()){ TextView bmi=(TextView)findViewById(R.id.textView9); TextView kcal=(TextView)findViewById(R.id.textView10); bmi.setText(res.getString(3)); kcal.setText(res.getString(4)); } } }

有人能告诉我,我的代码有什么问题吗?

从数据库查询数据,您必须使用:

this.getReadableDatabase();

使用
getWritableDatabase()
在数据库中写入、更新和删除数据。

从数据库中查询数据时,必须使用:

this.getReadableDatabase();

当您想在数据库中写入、更新或删除数据时,可以使用
getWritableDatabase()

这不起作用的确切原因是因为此行的“myDb”为空

 Cursor res = myDb.getAllData();

不过,我推荐你。在主线程上加载数据库中的内容可能会导致ANR错误,这似乎有些过分。

这不起作用的确切原因是因为这一行的“myDb”为空

 Cursor res = myDb.getAllData();


不过,我推荐你。从数据库中向主线程加载内容可能会导致ANR错误,这似乎有些过分。

您是否检查了光标中是否有记录?是否看到任何错误消息?把它贴在这里。也在后台线程上执行db调用最简单的一个是使用asynctasks。没有错误消息,但是当我使用emulator运行它时,emulator显示“不幸的是,MnutriHealth已停止”。然后您需要发布stacktrace,否则,我们无法帮助您。没有递归:)您是否检查了光标中是否确实有记录?是否看到任何错误消息?把它贴在这里。也在后台线程上执行db调用最简单的一个是使用asynctasks。没有错误消息,但是当我使用emulator运行它时,emulator显示“不幸的是,MnutriHealth已停止”。然后您需要发布stacktrace,否则,我们没有任何方法可以帮助您。没有递归:)这是一个很好的建议,但仍然可以从可写数据库中读取,因此这可能不是错误的原因。@MoLab为什么不提供所要求的内容?如果需要解决方案,请发布错误。这是主要活动吗?如果没有,您是否在清单中添加了该类?@DegenSharew没有错误,但是当我使用emulator运行它时,emulator显示“不幸的是,MnutriHealth已停止”。@MoLab检查日志cat当应用程序以这种方式崩溃时,总是会在那里记录错误。这是一个很好的建议,但仍然可以从可写数据库中读取,所以这可能不是错误的原因。@MoLab为什么不提供所要求的内容?如果需要解决方案,请发布错误。这是主要活动吗?如果没有,您是否在清单中添加了该类?@DegenSharew没有错误,但是当我使用emulator运行它时,emulator显示“很遗憾,MnutriHealth已停止”。@MoLab检查日志cat当应用程序以这种方式崩溃时,总会在那里记录错误。