Java 其他活动更改后的android更新活动文本视图
我有一个Android活动onCreate(),它将查询数据库并在UI上的文本视图中显示查询结果 我遇到的问题是,用户可以打开另一个活动并更新数据库。当它们返回到原始活动时,我希望文本视图用新的数据库信息更新(因此,我将重新查询数据库并显示信息) 我愿意做的另一件事是从用户(在新活动中)获取新输入,并直接更新现有活动中的textview(而不让现有活动重新查询数据库)。但我也不知道该怎么做 有人能告诉我做这件事的最佳方法吗?到目前为止,我找到的唯一解决方案与广播接收器有关,但我不确定这是否最适合我必须做的事情Java 其他活动更改后的android更新活动文本视图,java,android,user-interface,android-activity,textview,Java,Android,User Interface,Android Activity,Textview,我有一个Android活动onCreate(),它将查询数据库并在UI上的文本视图中显示查询结果 我遇到的问题是,用户可以打开另一个活动并更新数据库。当它们返回到原始活动时,我希望文本视图用新的数据库信息更新(因此,我将重新查询数据库并显示信息) 我愿意做的另一件事是从用户(在新活动中)获取新输入,并直接更新现有活动中的textview(而不让现有活动重新查询数据库)。但我也不知道该怎么做 有人能告诉我做这件事的最佳方法吗?到目前为止,我找到的唯一解决方案与广播接收器有关,但我不确定这是否最适合
如果有任何建议,我将不胜感激。谢谢 如果列表视图中显示的数据量不大,最简单的解决方案就是在onResume()方法中重新查询数据库。当活动再次显示给用户时,总是调用此方法
BroadcastReceiver是件好事,但对于这样简单的任务来说,付出的努力是不值得的。如果列表视图中显示的数据量不大,最简单的解决方案就是用onResume()方法在数据库中重新查询。当活动再次显示给用户时,总是调用此方法 BroadcastReceiver是件好事,但对于这么简单的任务来说,付出的努力并不值得。您可以做:
@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()方法填充文本视图。您可以执行以下操作:
@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()方法填充文本视图。如果在onResume中使用setText,您仍然需要通过处理程序刷新/重画。我找到的最简单的方法是重新绘制基本布局视图
LinearLayout myBaseLayout = (LinearLayout)findViewById(R.id.linearlayout01);
myBaseLayout.invalidate();
只要确保它在处理程序方法中。如果您在onResume中使用setText,您仍然需要通过处理程序刷新/重画。我找到的最简单的方法是重新绘制基本布局视图
LinearLayout myBaseLayout = (LinearLayout)findViewById(R.id.linearlayout01);
myBaseLayout.invalidate();
只需确保它在处理程序方法中。我尝试使用onResume()重新查询数据库,然后在TextView上使用setText(),但它似乎没有更新。有什么想法吗?我尝试使用onResume()重新查询数据库,然后在TextView上使用setText(),但似乎没有更新。有什么想法吗?弗拉基米尔,请看我对上面帖子的评论。谢谢请提供一个用于更新文本视图的代码片段。啊,没关系,我没有正确设置从数据库获得的值。谢谢你的帮助!弗拉基米尔,请看我对上面帖子的评论。谢谢请提供一个用于更新文本视图的代码片段。啊,没关系,我没有正确设置从数据库获得的值。谢谢你的帮助!