我有一个构建包含微调控件的AlertDialog的类。当Spinner显示它的弹出窗口时,如果我改变了手机的方向,我的应用程序崩溃,异常情况说有关泄漏窗口的东西。这个问题之前已经讨论过很多次,但是只有在多线程的背景下。但我有一个线程。那么我做错了什么?方向更改崩溃我的应用程序
public class ExpenseDialog extends DialogFragment
{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
LayoutInflater factory = LayoutInflater.from(this.getActivity());
View content = factory.inflate(R.layout.expensedialog, null);
Spinner spinner = (Spinner) content.findViewById(R.id.catspinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this.getActivity(), R.array.cats, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
return new AlertDialog.Builder(this.getActivity())
.setView(content)
.setPositiveButton("ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//some code
}
})
.setNegativeButton("cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//some code
}
})
.create();
}
}
我表明这样的对话: (新ExpenseDialog())显示(getSupportFragmentManager(), “expensedialog”);
发布您的logcat! – 2012-02-21 17:24:50
这是非常大的,但它在beginnig说:活动andrey_it.expensetracker.MainActivity已泄露窗口[email protected]最初在这里添加 02-21 19:39:56.174: E/WindowManager(19094):android.view.WindowLeaked:Activity andrey_it.expensetracker.MainActivity泄露了窗口[email protected]最初在这里添加 – 2012-02-21 17:40:29
从我读过的内容接缝给我,我明白是什么原因造成的错误:在活动重新开始后,我的弹出框恰好与先前不再存在的活动相关联。但我能做什么呢? – 2012-02-21 17:43:59