2016-03-02 50 views
0

我目前正面临一个问题:我需要等待我的请求的结果才能返回值。这里是我FragmentDispatcher的类FragmentDispatcher中任务/服务的等待结果

public static Fragment getFragment(){ 
    switch (value) { 
     case "1": 
     // returns a fragment 
     break; 

     case "2": 
     // returns another fragment 
     break; 

     case "3": 
     // returns the correct fragment according to an async task or a Service response value 
     break; 
    } 
    // returns default fragment 
} 

我的情况的样品第三:我需要等待任务或服务,以完成到返回根据异步任务的响应值的片段(以事实上,这是一个布尔值)。由于异步任务是异步的,我的函数立即返回默认片段。

有人可以帮忙解决吗?

+0

等待结果异步请求通常会使首先使请求异步的目的失效。例如,如果你在uI线程上尝试,你会得到一个Application Not Responding错误。你将不得不改变你的设计。例如,这个方法可以返回null来表示“我不知道什么片段”,而异步任务的结束可能会触发某种重试。这可能是一个太大的变化,覆盖Stack Overflow答案(或评论!) –

+0

感谢您的评论,我同意使用异步任务是一种非常糟糕的方式。我还提到了服务或意向服务呢?感谢onEventMainThread方法,有什么方法可以用我们捕获的EventBus检索结果吗? – StevenTB

回答

0

我已经通过在AsyncTask中调用getFragment()方法来解决我的问题。一旦完成,我在postExecute()中启动该片段()