从我的 mainactivity中,我需要调用一个内部类,并且在类中的一个方法中,我需要显示AlertDialog. 关闭后,当按下 OK 按钮时,转发到 Google Play 进行购买。
在大多数情况下,事情都很顺利,但对于少数用户来说,它正在崩溃builder.show(),我可以"android.view.WindowManager$BadTokenException:从崩溃日志中看到“无法添加窗口”。请提出建议。
我的代码几乎是这样的:
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();
}