Từ main của tôi activity
, tôi cần gọi một lớp bên trong và trong một phương thức bên trong lớp, tôi cần hiển thị AlertDialog
. Sau khi loại bỏ nó, khi nút OK được nhấn, hãy chuyển tiếp đến Google Play để mua.
Mọi thứ hoạt động hoàn hảo trong hầu hết thời gian, nhưng đối với một số người dùng, nó đang bị lỗi builder.show()
và tôi có thể thấy "android.view.WindowManager$BadTokenException:
Không thể thêm cửa sổ "từ nhật ký sự cố. Vui lòng đề xuất.
Mã của tôi khá giống thế này:
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();
}
}
}
}
Tôi cũng đã thấy lỗi trong một cảnh báo khác mà tôi không chuyển tiếp đến bất kỳ cảnh báo nào khác activity
. Nó đơn giản như thế này:
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
. Tôi nghĩ rằng nếu bạn nhận xét phần bạn đang đi đến Hoạt động mới, lỗi này sẽ biến mất. Lỗi dường như xảy ra vì hộp thoại trước của bạn bị loại bỏ hoàn toàn, hoạt động mới của bạn bắt đầu. Trong onPostExecute()
, bạn có hộp thoại cảnh báo và bạn đang đưa ra ngữ cảnh của login
Hoạt động. Nhưng bạn đang điều hướng đến hoạt động khác, vì vậy ngữ cảnh trở nên sai. Do đó bạn đang gặp lỗi này! Xem câu hỏi tương tự stackoverflow.com/questions/15104677/… .