2016-09-27 42 views
2

我有一个DialogFragment。当我点击确定按钮,我在这部分代码执行的改型调用我的API这样在onResponse回调方法改进空的上下文android

@Override 
      public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) { 
       int code = response.code(); 
       if (code == 200) { 
        LoginResponse lr = response.body(); 
        if (lr.getError()) { 
         Utils.showToast(getActivity(), "Error! Los datos son incorrectos."); 
        } else { 
         startActivity(new Intent(getActivity(), ConfigGeneralActivity.class)); 
        } 
       } else { 
        Toast.makeText(getActivity(), "Error: " + String.valueOf(code), Toast.LENGTH_LONG).show(); 
       } 

      } 

,getActivity()为null。

另一种选择是将上下文从oncreatedialog传递到此回调函数,但是当我这样做时,我得到了错误,指出活动未附加到碎片。

我知道我可以实现Otto,但对于我想要做的事情来说太复杂了。我只想从DialogFragment中的改进回调开始一个新的活动。

任何想法?谢谢!

+0

我觉得你的片段调用此方法破坏,因此片段没有连接到活动方法响应时。 –

+0

尝试使用应用程序上下文的情况下getActivity()为空 – Jai

+0

@Jai但要调用applicationContext我必须调用getActivity()。getApplicationContext()和getActivity()为null .. –

回答

1

您需要runOnUiThread得到OnResponse回调

像里面的语境:

@Override 
public void onResponse(Call call, Response response) throws IOException { 
    if (response.isSuccessful()) {  
     getActivity().runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       //your code 
      } 
     }); 
    } 
} 
+0

好!工作给我! –