从我的主 activity
,我需要调用一个内部类,并在该类中的一个方法中,我需要显示AlertDialog
。将其关闭后,按“确定”按钮时,请转到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();
}
//send to some other activity
。我认为,如果您要注释要进行新活动的零件,则该错误将消失。似乎发生此错误是因为您之前的对话框已完全消除,您的新活动开始了。在中onPostExecute()
,您将看到警报对话框,并且正在提供login
活动的上下文。但是您正在导航到其他活动,因此上下文变得错误。因此,您会收到此错误!参见stackoverflow.com/questions/15104677/…类似问题。