Dari utama saya activity
, saya perlu memanggil kelas dalam dan dalam metode di dalam kelas, saya perlu menunjukkan AlertDialog
. Setelah menutupnya, saat tombol OK ditekan, teruskan ke Google Play untuk membeli.
Segala sesuatunya bekerja dengan sempurna untuk sebagian besar waktu, tetapi untuk beberapa pengguna ini macet builder.show()
dan saya dapat melihat "android.view.WindowManager$BadTokenException:
Tidak dapat menambahkan jendela "dari log kerusakan. Harap sarankan.
Kode saya kurang lebih seperti ini:
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();
}
}
}
}
Saya juga telah melihat kesalahan di lansiran lain di mana saya tidak meneruskan ke yang lain activity
. Sederhana seperti ini:
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();
}
android
android-alertdialog
MSIslam
sumber
sumber
//send to some other activity
. Saya pikir jika Anda akan mengomentari bagian di mana Anda akan pergi ke Aktivitas baru, kesalahan ini akan hilang. Kesalahan ini tampaknya terjadi karena dialog sebelum Anda ditutup sepenuhnya, aktivitas baru Anda dimulai. DionPostExecute()
, Anda memiliki dialog peringatan dan Anda memberikan kontekslogin
Aktivitas. Tapi Anda menavigasi ke aktivitas lain, jadi konteksnya menjadi salah. Karenanya Anda mendapatkan kesalahan ini! Lihat stackoverflow.com/questions/15104677/… pertanyaan serupa.Jawaban:
Masalah:
Alasan:
Larutan:
mis .
Pembaruan:
Token Jendela:
Skenario dunia nyata:
sumber
Saya memiliki dialog yang menampilkan fungsi:
Saya mendapatkan kesalahan ini dan saya hanya perlu memeriksa
isFinishing()
sebelum memanggil fungsi yang menampilkan dialog ini.sumber
if(!MyActivity.this.isFinishing())
? Jika tidak benar di MyActivityAlasan yang mungkin adalah konteks dialog peringatan. Anda mungkin menyelesaikan aktivitas itu sehingga mencoba untuk membuka dalam konteks itu tetapi yang sudah ditutup. Coba ubah konteks dialog itu menjadi aktivitas pertama Anda karena tidak akan selesai sampai akhir.
misalnya
daripada ini.
coba gunakan
sumber
kedua, coba buat AlterDailog dari pembangun lalu panggil show ().
sumber
Saya membuat Dialog
onCreate
dan menggunakannya denganshow
danhide
. Bagi saya, akar permasalahannya tidak menampikonBackPressed
, yaitu menyelesaikanHome
aktivitas.Saya menyelesaikan Aktivitas Rumah
onBackPressed
tanpa menutup / menutup dialog saya.Ketika saya menutup dialog saya, crash itu menghilang.
sumber
Saya mencoba ini diselesaikan.
sumber
Coba ini :
sumber
dengan ide variabel global ini, saya menyimpan instance MainActivity di onCreate (); Variabel global Android
dan Buka dialog seperti ini. itu berhasil.
dan di utas, saya membuka dialog seperti ini.
:)
sumber