2014-05-12 38 views
0

既然这样,我的应用程序/目前正在处理一个HTTP POST和一个异步任务一些其他的东西,然后在任务完成和onPostExecute叫我会尝试重定向通过片段事务处理另一个片段。这已被证明相当棘手,我期待替代处理这种情况,而不企图犯onPostExecute交易。谢谢!与结果处理一个异步任务

编辑:这里是从onPostExecute被调用的方法...

private void callback(boolean submissionSuccessful) 
{ 
    if (submissionSuccessful) 
    { 
     FragmentManager fragmentManager = getActivity() 
       .getSupportFragmentManager(); 

     Fragment f = new CompletedFragment(); 

     Bundle args = new Bundle(); 

     args.putString("id", reportToSubmit.getReferenceId()); 

     f.setArguments(args); 

     fragmentManager.beginTransaction() 
       .replace(R.id.content_frame, f, "completed").commit(); 


    } 
    else 
    { 
     Toast.makeText(getActivity(), getResources().getString(R.string.report_error), 
       Toast.LENGTH_LONG).show(); 
    } 
} 

这样做的原因如下:用户完成向导(ViewPager),提交,示出了进度对话框而处理,当完成onPostExecute提交确认片段,让用户知道该过程已完成。

+0

请出示:1.你是如何处理的东西,现在,正好2 Whay已经证明棘手? – nhaarman

+0

我编辑我原来的职位,现在,以反映这一信息。 – DeveryDay

回答

0

的逻辑看起来很不错。我不确定你想改变什么。

两件事:

  • 你可能想告诉你Activity做过渡(移动回调方法)。这将这个片段与第二个片断分开,这被认为是“良好实践”。
  • 其次,在onPostExecute,你Fragment可能无法连接到Activity了,而且getActivity()将返回null。你可以在取消AsyncTask,或onPostExecute检查isAdded
+0

奇怪的是,使用这段代码,有时当我的Async方法完成时,它会移动完成的片段,然后我看到它,但有时会跳过已完成片段的视图。那现在是我的主要问题,并且担心commit()会抛出一个非法状态异常,如果偶然在调用onsaveInstance()之后调用它。 – DeveryDay