2016-09-27 2 views
2

У меня есть DialogFragment. Когда я нажимаю на кнопку OK, я выполнить модифицированную вызов моему апи как этотНулевой контекст в методе обратного вызова onResponse retrofit 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() равно нулю.

Другой вариант - передать контекст из oncreatedialog для этого обратного вызова, но когда я это сделаю, я получил сообщение об ошибке, которое говорит, что активность не привязана к фрагменту.

Я знаю, что могу реализовать Отто, но это слишком сложно для того, что я хочу сделать. Я просто хочу начать новую деятельность с ретрофицированного обратного вызова внутри DialogFragment.

Любые идеи? Благодаря!

+0

Я думаю, что ваш фрагмент вызова этого метода разрушен, поэтому фрагмент не присоединен к активности, когда ответы метода. –

+0

Попробуйте использовать контекст приложения в случае getActivity() null – Jai

+0

@Jai, но для вызова applicationContext мне нужно вызвать getActivity(). GetApplicationContext() и getActivity() равно null .. –

ответ

1

Вам нужно runOnUiThread, чтобы получить контекст внутри OnResponse Callback

Нравится:

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

приятно! работайте со мной! –

Смежные вопросы