我有一个Activity,如果第一次启动就会显示欢迎信息:
@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();
}
}
这一切都很完美,但是当我启动应用并立即旋转屏幕时,就会出现众所周知的泄漏窗口异常。
我该如何避免这种情况?是否有更好的方法来显示对话框?当我在片段中使用AsyncTask
的ProgressDialog
时,也会发生这种情况。
new AlertDialog.Builder(this.getParent());
,不确定。 - Samir Mangroliya