am 3ab249cc: Merge "Fixing memory leak in PreferenceScreen." into honeycomb
* commit '3ab249cc32b2b94b8d4fcb2775e5b97285c48623':
Fixing memory leak in PreferenceScreen.
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index c7f8ab2..45e3a4c 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -80,6 +80,8 @@
private ListAdapter mRootAdapter;
private Dialog mDialog;
+
+ private ListView mListView;
/**
* Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
@@ -146,15 +148,18 @@
private void showDialog(Bundle state) {
Context context = getContext();
- ListView listView = new ListView(context);
- bind(listView);
+ if (mListView != null) {
+ mListView.setAdapter(null);
+ }
+ mListView = new ListView(context);
+ bind(mListView);
// Set the title bar if title is available, else no title bar
final CharSequence title = getTitle();
Dialog dialog = mDialog = new Dialog(context, TextUtils.isEmpty(title)
? com.android.internal.R.style.Theme_NoTitleBar
: com.android.internal.R.style.Theme);
- dialog.setContentView(listView);
+ dialog.setContentView(mListView);
if (!TextUtils.isEmpty(title)) {
dialog.setTitle(title);
}