我有一个Android活动,onCreate()将查询数据库并在UI上的textview中显示查询结果。
我遇到的问题是,用户可以打开另一个活动并更新数据库。当他们回到原始活动时,我希望文本视图能够使用新的数据库信息进行更新(因此,我将重新查询数据库并显示信息)。
我愿意做的另一件事是从用户那里获取新输入(在新活动中)并直接更新现有活动中的textview(不需要现有活动重新查询数据库)。但是我不知道怎么做这样的事情。
有人可以告诉我最好的方法吗?到目前为止,我发现的唯一解决方案与广播接收器有关,但我不确定这是否最适合我必须做的事情。
我很感激任何建议。谢谢!
答案 0 :(得分:3)
如果要在列表视图中显示的数据量不大,最简单的解决方案就是在onResume()方法中重新查询数据库。当活动再次显示给用户时,始终会调用此方法。
BroadcastReceiver是一件好事,但努力不值得这么简单的任务。
答案 1 :(得分:2)
你可以这样做:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
db.beginTransaction();
Cursor cur = null;
try {
cur = db.query("table",
null, null, null, null, null, null);
cur.moveToPosition(0);
String titleString = cur.getString(cur.getColumnIndex("title"));
db.setTransactionSuccessful();
} catch (Exception e) {
Log.e("Error in transaction", e.toString());
} finally {
db.endTransaction();
cur.close();
}
}
交易真的很快。 您可以使用onResume()方法来填充Textview。
答案 2 :(得分:0)
如果你在onResume中使用setText,你仍然需要通过处理程序刷新/重绘。我发现最简单的方法是重绘基本布局视图。
LinearLayout myBaseLayout = (LinearLayout)findViewById(R.id.linearlayout01);
myBaseLayout.invalidate();
确保它在你的处理程序方法中。