З мого основного 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/… подібне запитання.