Java 其他活动更改后的android更新活动文本视图

Java 其他活动更改后的android更新活动文本视图,java,android,user-interface,android-activity,textview,Java,Android,User Interface,Android Activity,Textview,我有一个Android活动onCreate(),它将查询数据库并在UI上的文本视图中显示查询结果 我遇到的问题是,用户可以打开另一个活动并更新数据库。当它们返回到原始活动时,我希望文本视图用新的数据库信息更新(因此,我将重新查询数据库并显示信息) 我愿意做的另一件事是从用户(在新活动中)获取新输入,并直接更新现有活动中的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(),但似乎没有更新。有什么想法吗?弗拉基米尔,请看我对上面帖子的评论。谢谢请提供一个用于更新文本视图的代码片段。啊,没关系,我没有正确设置从数据库获得的值。谢谢你的帮助!弗拉基米尔,请看我对上面帖子的评论。谢谢请提供一个用于更新文本视图的代码片段。啊,没关系,我没有正确设置从数据库获得的值。谢谢你的帮助!