Merge "Fixing memory leak in PreferenceScreen."

This commit is contained in:
Brad Fitzpatrick
2011-01-18 13:23:13 -08:00
committed by Android Code Review

View File

@@ -81,6 +81,8 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi
private Dialog mDialog; private Dialog mDialog;
private ListView mListView;
/** /**
* Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}. * Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
* @hide- * @hide-
@@ -145,15 +147,18 @@ public final class PreferenceScreen extends PreferenceGroup implements AdapterVi
private void showDialog(Bundle state) { private void showDialog(Bundle state) {
Context context = getContext(); Context context = getContext();
ListView listView = new ListView(context); if (mListView != null) {
bind(listView); mListView.setAdapter(null);
}
mListView = new ListView(context);
bind(mListView);
// Set the title bar if title is available, else no title bar // Set the title bar if title is available, else no title bar
final CharSequence title = getTitle(); final CharSequence title = getTitle();
Dialog dialog = mDialog = new Dialog(context, TextUtils.isEmpty(title) Dialog dialog = mDialog = new Dialog(context, TextUtils.isEmpty(title)
? com.android.internal.R.style.Theme_NoTitleBar ? com.android.internal.R.style.Theme_NoTitleBar
: com.android.internal.R.style.Theme); : com.android.internal.R.style.Theme);
dialog.setContentView(listView); dialog.setContentView(mListView);
if (!TextUtils.isEmpty(title)) { if (!TextUtils.isEmpty(title)) {
dialog.setTitle(title); dialog.setTitle(title);
} }