我有這表明,如果開始的第一次一個值得歡迎的消息的活動:ProgressDialog和AlertDialog原因泄露的窗口
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
showWelcomeMessageIfNecessary();
}
private void showWelcomeMessageIfNecessary() {
final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
final Editor edit = prefs.edit();
if (!prefs.getBoolean("welcomemessage", false)) {
edit.putBoolean("welcomemessage", true);
edit.commit();
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(R.string.messages_welcome_content).setCancelable(false).setPositiveButton(R.string.errors_ok, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// Do nothing
}
}).setTitle(R.string.messages_welcome_title);
AlertDialog alert = builder.create();
alert.show();
}
}
這一切精美的作品,但是當我啓動應用程序,並立即旋轉屏幕,我得到了衆所周知的泄露窗口例外。
我會如何防止這種情況發生?有更好的方法來顯示對話框嗎?當我在Fragment
s的AsyncTask
s中使用ProgressDialog
s時也會發生這種情況。
可能是'新AlertDialog.Builder(this.getParent());'不確定 –