Я знаю, что этот вопрос много раз задавался в stackoverflow, но я не могу найти ответ, который может решить мою проблему.
Вот код, который я вызвал из функции onPause () моей Деятельности.
`
`protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
new DialogueTask().execute(this);
}
А реализация задачи класса Диалог -
class DialogueTask extends AsyncTask<Activity, Void, PopupWindow> {
private View layout;
@Override
protected PopupWindow doInBackground(Activity... activities) {
LayoutInflater layoutInflater = (LayoutInflater) activities[0]
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layout = layoutInflater.inflate(R.layout.popup,
(ViewGroup) activities[0].findViewById(R.id.popup_id));
PopupWindow pw;
pw = new PopupWindow(layout, 100, 100, true);
return pw;
}
@Override
protected void onPostExecute(PopupWindow pw) {
// TODO Auto-generated method stub
pw.showAtLocation(layout, Gravity.CENTER, 0, 0);
}
Это popup.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/popup_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Sure you want to Quit?" >
</TextView>
</LinearLayout>
При нажатии кнопки назад вызывается onPause (), и это дает исключение WindowLeaked. Я думаю, я позаботился о том, чтобы всплывающее окно отображалось в потоке пользовательского интерфейса путем реализации AsyncTask. Тогда где может быть проблема?