0

이 오류는 내 오류 보고서에서 android.view.WindowManager$BadTokenException가 나타납니다. 일부 기기에서는 예외 만보고되지만 앱은 다운되지 않으며 다른 기기에서는 오류가 발생합니다.

앱이 대화 상자를 표시하는 방법과 관련이 있습니다.

다른 답변은 글로벌 하나와 같이 잘못된 context이 사용되고 있음을 보여 주지만 제 경우에는 다른 작업의 방법으로 내 활동의 컨텍스트를 전달하고 있습니다.

public class Utils {

Utils.noConnection(myActivity.this);

오류 로그처럼 내 활동 방법에 의해 불려

public static void noConnection(Context context){ 
    final CustomAlertDialog alert = new CustomAlertDialog(context, context.getString(R.string.ErrorPastTense), context.getString(R.string.ErrorInternet), context.getString(R.string.OkButton), null); 

    View.OnClickListener listener = new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      int id = v.getId(); 
      switch(id){ 
       case R.id.alertConfirm: 
        alert.dismiss(); 
        break; 
       default: 
        break; 
      } 
     } 
    }; 
    alert.setListener(listener); 
    alert.show(); 
} 

가 표시하는 방법을 alert.show()

에서 발생하는 등의 예외를 포함 왜? 및 피하는 방법

+0

onCreate() 내에서 Context context = null을 전역 및 컨텍스트 = this로 사용하십시오. Utils.noConnection (context); –

답변

1

UI 스레드에서 대화 상자를 표시 하시겠습니까? 다음과 같이 시도하십시오.

+0

흠,'onPostExecute()'에서 실행되므로 확실히 UI 스레드가되지만 여전히 조건에 표시된 다른 대화 상자가있을 수 있습니다. 'Utils' 클래스를 호출하기 바로 전에 또 다른'dialog.dismiss()'를 추가했습니다 – CQM

+0

비동기 작업에서 대화 상자를 여는 중입니까? 컨텍스트를 열려고 할 때 컨텍스트가 유효하지 않을 수 있습니다. –

+0

가 잘못 되었습니까? asynctask는 동일한 액티비티에서 실행되며, 서버가 적절하게 리턴되지 않으면 어떤 액티비티 또는 UI 요소 등을 변경하지 않고 대화 상자를 팝업하는 경우에만 발생합니다. – CQM

관련 문제