私のメインから、私activity
は内部クラスを呼び出す必要があり、クラス内のメソッドで、私は示す必要があります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();
}
//send to some other activity
です。新しいアクティビティに行く部分をコメントすると、このエラーはなくなると思います。前のダイアログが完全に閉じられ、新しいアクティビティが開始されるため、エラーが発生するようです。にonPostExecute()
は、アラートダイアログがあり、login
アクティビティのコンテキストを示しています。ただし、他のアクティビティに移動しているため、コンテキストが間違っています。したがって、このエラーが発生しています!stackoverflow.com/questions/15104677/…同様の質問を参照してください。