내 메인 activity
에서 내부 클래스를 호출하고 클래스 내의 메서드에서 AlertDialog
. 해제 후 OK 버튼을 누르면 구매를 위해 Google Play로 이동합니다.
대부분의 경우 완벽하게 작동하지만 일부 사용자의 경우 충돌이 발생 builder.show()
하고 "android.view.WindowManager$BadTokenException:
충돌 로그에서 Unable to add window "를 볼 수 있습니다. 제안 해주세요.
내 코드는 다음과 같습니다.
public class classname1 extends Activity{
public void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
setContentView(R.layout.<view>);
//call the <className1> class to execute
}
private class classNamename2 extends AsyncTask<String, Void, String>{
protected String doInBackground(String... params) {}
protected void onPostExecute(String result){
if(page.contains("error"))
{
AlertDialog.Builder builder = new AlertDialog.Builder(classname1.this);
builder.setCancelable(true);
builder.setMessage("");
builder.setInverseBackgroundForced(true);
builder.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
dialog.dismiss();
if(!<condition>)
{
try
{
String pl = "";
mHelper.<flow>(<class>.this, SKU, RC_REQUEST,
<listener>, pl);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
});
builder.show();
}
}
}
}
또한 다른 경고에 전달하지 않는 다른 경고에서도 오류가 발생했습니다 activity
. 다음과 같이 간단합니다.
AlertDialog.Builder builder = new AlertDialog.Builder(classname1.this);
builder.setCancelable(true);
//if successful
builder.setMessage(" ");
builder.setInverseBackgroundForced(true);
builder.setNeutralButton("Ok",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton){
// dialog.dismiss();
}
});
builder.show();
}
//send to some other activity
. 새로운 활동에 갈 부분을 언급하면이 오류가 사라질 것이라고 생각합니다. 이전 대화 상자가 완전히 닫히고 새 활동이 시작되기 때문에 오류가 발생한 것 같습니다. 에는 onPostExecute()
경고 대화 상자가 있으며 login
활동 의 컨텍스트를 제공합니다 . 그러나 다른 활동으로 이동하고 있으므로 컨텍스트가 잘못됩니다. 따라서이 오류가 발생합니다! stackoverflow.com/questions/15104677/… 유사한 질문을 참조하십시오 .