0

我不确定我是否完全理解从子活动返回后需要做什么来检索数据。我不需要将数据传递给父活动。我用这个作为参考,他们确实提到了 onPause 和 onResume 以及可能的解决方案,但是我应该使用保存的首选项而不是 onSaveInstanceState 和 onRestoreInstanceState 吗?它在检查布尔值的后台任务中失败。我也用这个获得进一步的帮助。

下面的代码:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    // Save UI state changes to the savedInstanceState.
    // This bundle will be passed to onCreate if the process is
    // killed and restarted.
    savedInstanceState.putString("type",type);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // Restore UI state from the savedInstanceState.
    // This bundle has also been passed to onCreate.
    super.onRestoreInstanceState(savedInstanceState);
    type = savedInstanceState.getString("type");
}

public class getFeed extends AsyncTask<String, Void, Void>{
    @Override
    protected Void doInBackground(String... strings) {
        ParseQuery<ParseObject> contentFeed = new ParseQuery<>("UserCommentary");
        if(type.equals("object1")){
            //Query for object1
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
    else if(type.equals("object2")){
        //Query for object2
    }

    return null;
}

@Override
protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
    mySwipeRefreshLayout.setRefreshing(false);
    commentary.setAdapter(vCommentDetailAdapter);
    vCommentDetailAdapter.notifyDataSetChanged();
}

编辑:向代码添加了更多信息

4

2 回答 2

0

我发现这个解决方案可以满足我的需要,而无需保存数据和重新加载数据。

于 2016-09-27T00:47:39.283 回答
0

事后看来,getFeedAsyncTask 正在执行onCreate()

你基本上是太早了。有关 Android Activity 生命周期的信息,请参见此处

onCreate()/onStart()之前被调用onRestoreInstanceState()。因此,将 Task 的执行放入您的onResume()方法中。

于 2016-09-26T14:34:54.820 回答