0

我有 2 个活动,第一个有一个 ListView,我想从第二个活动异步任务中更新。
怎么能做到这一点?我在谷歌上搜索了一天,但没有找到任何东西。

public class Activity1 extends Activity {
    ...
    //launch activity2
    }

在第二个 Activity 中完成了一些过程,然后我想更新 Activity1:

public class Activity2 extends Activity {
    ...
    new UpdateDB ().execute();
    // Return to Activity 1 but UpdateDB is still working ..
    // ..after finished the work i want to update activity1
    setResult(RESULT_OK, null);
    finish();

    private class UpdateDB extends AsyncTask<Void, Void, Void> {
        ...
        protected void onPostExecute(Void unused) {
            // HERE TRYING TO UPDATE activity1
        }
    }
}
4

3 回答 3

3

把你的代码放进去onPostExecute()

    protected void onPostExecute(Void unused) {
    //HERE TRYING TO UPDATE activity1
     setResult(RESULT_OK, null);
     finish();
    }
  }

如果您需要发回一些数据,请使用 anIntent而不是null. 就像是

 protected void onPostExecute(Void unused) {
    //HERE TRYING TO UPDATE activity1
     Intent i = new Intent();
     // add extras to send back
     setResult(RESULT_OK, i);   // pass back your Intent
     finish();
    }
  }

然后在Activity1你有onActivityResult()which 收到Intent你传回的那个setResult()。我假设您Activity2startActivityForResult().

于 2013-11-13T19:06:12.633 回答
0

您可以AsyncTask在第二个活动中使用。尽力而为,doInBackground然后调用/更新第一个活动onpostexecute

于 2013-11-13T19:07:13.140 回答
0

您可以将更改存储在SharedPreference中。所以你可以在你的第一个活动的 onResume 上访问它。

如果值在 onResume 回调后发生更改,请使用OnSharedPreferenceChangeListener接口通知更改。

于 2013-11-13T19:03:49.183 回答