关闭活动后,RecyclerView / db未更新

时间:2017-04-02 01:12:49

标签: android

在一项活动中,我正在更新我的数据库。我检查以确保db已更新并完成()该活动。但是当我在上一个活动中时,我的数据库没有更新,因此我的recyclerview也没有更新。有什么想法吗?

此外,数据库调用在我的onResume中。

哦,还有一个关键细节,如果我离开活动并返回它,它最终会更新。

1 个答案:

答案 0 :(得分:0)

您必须在活动1 中的notifyDataSetChanged()中致电onResume(),在那里您拥有RecyclerView。但这不是好方法。每当您将最小化您的活动并使其再次激活时,即使您的数据库未更新,也始终会调用onReceive()

您所要做的就是使用活动1 中的startActivityForResult(),如下所示:

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, DB_UPDATE_REQUEST);

其中DB_UPDATE_REQUEST活动1 中声明,如下所示:

public static final int DB_UPDATE_REQUEST = 1;

活动2 中更新数据库后创建Intent,如果数据库成功更新或RESULT_OK,请将结果设置为RESULT_CANCELED如果数据库更新被取消或中断如下:

if (your_db_update_status) {
    setResult(AppCompatActivity.RESULT_OK);
} else {
    setResult(AppCompatActivity.RESULT_CANCELED);
}
finish();

活动1 中检索活动2 发送的信息,如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == DB_UPDATE_REQUEST) {
        switch (resultCode) {
            case RESULT_OK: {
                Log.i("Activity 1", "Back from Activity 2. DB succesfully updated.");
                adapter.notifyDataSetChanged();
                break;
            }
            case RESULT_CANCELED: {
                Log.i("Activity 1", "Back from Activity 2. Error in updateing DB.");
                break;
            }
        }
    }
}