Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 关闭活动后未更新RecyclerView/db_Android - Fatal编程技术网

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

Android 关闭活动后未更新RecyclerView/db,android,Android,在一个活动中,我正在更新我的数据库。我检查以确保数据库已更新并完成该活动。但是当我在上一个活动中时,我的数据库没有更新,因此我的recyclerview也没有更新。你知道为什么吗 另外,数据库调用也在我的简历中 哦,还有一个关键细节,如果我离开活动并返回活动,它最终会更新。您必须在onResume()中调用notifydatasetchange(),在activity 1中,您有RecyclerView。但这不是好办法。每次您将最小化活动并使其再次处于活动状态时,即使数据库未更新,也将始终调用o

在一个活动中,我正在更新我的数据库。我检查以确保数据库已更新并完成该活动。但是当我在上一个活动中时,我的数据库没有更新,因此我的recyclerview也没有更新。你知道为什么吗

另外,数据库调用也在我的简历中


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

您必须在
onResume()
中调用
notifydatasetchange()
,在
activity 1中,您有
RecyclerView
。但这不是好办法。每次您将最小化活动并使其再次处于活动状态时,即使数据库未更新,也将始终调用
onReceive()

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

Intent i = new Intent(Activity1.this, Activity2.class);
startActivityForResult(i, DB_UPDATE_REQUEST);
其中
DB\u UPDATE\u REQUEST
活动1中声明,如本f.e.:

public static final int DB_UPDATE_REQUEST = 1;
活动2中更新数据库创建
Intent
后,如果数据库更新成功,则将其结果设置为
result\u OK
,如果数据库更新被取消或中断,则将其设置为
result\u cancelled

if (your_db_update_status) {
    setResult(AppCompatActivity.RESULT_OK);
} else {
    setResult(AppCompatActivity.RESULT_CANCELED);
}
finish();
@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;
            }
        }
    }
}
在活动1中
检索活动2发送的信息,如下所示:

if (your_db_update_status) {
    setResult(AppCompatActivity.RESULT_OK);
} else {
    setResult(AppCompatActivity.RESULT_CANCELED);
}
finish();
@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;
            }
        }
    }
}

等待假设您处于活动1中,其中有RecyclerView,然后启动活动2,更新数据库。完成活动2后,您希望更新活动1中的RecyclerView,对吗?第一个。当我完成活动2时,我希望更新活动1。如果db在更新时出现问题,您认为这是必要的吗?因为它以前工作过。。不知道我改变了什么。。。当我刷新页面时,数据库会更新。。。但第一次,它没有