From c017f18a59a6b0ba1905a67193057b5b70410e06 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Wed, 24 Apr 2013 13:18:01 +0900 Subject: [PATCH] [PB4] Make a memory non-static The life span of this object is actually the life span of the interface. It should not be static. Also, we'll have a few other things to store in there soon. Bug: 7600384 Change-Id: I708019e9ee53653e83a1e52c8e76326c3e39bcf3 --- .../DictionaryListInterfaceState.java | 24 +++++++++++++++++++ .../DictionarySettingsFragment.java | 7 ++++-- .../dictionarypack/WordListPreference.java | 18 ++++++++------ 3 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java new file mode 100644 index 000000000..cbf0476a3 --- /dev/null +++ b/java/src/com/android/inputmethod/dictionarypack/DictionaryListInterfaceState.java @@ -0,0 +1,24 @@ +/** + * Copyright (C) 2013 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy + * of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +package com.android.inputmethod.dictionarypack; + +/** + * Helper class to maintain the interface state of word list preferences. + */ +public class DictionaryListInterfaceState { + public String mLastClickedId = null; +} diff --git a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java index 9e27c1f3f..aa1e9b9cf 100644 --- a/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java +++ b/java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java @@ -64,6 +64,8 @@ public final class DictionarySettingsFragment extends PreferenceFragment private ConnectivityManager mConnectivityManager; private MenuItem mUpdateNowMenu; private boolean mChangedSettings; + private DictionaryListInterfaceState mDictionaryListInterfaceState = + new DictionaryListInterfaceState(); private final BroadcastReceiver mConnectivityChangedReceiver = new BroadcastReceiver() { @Override @@ -297,8 +299,9 @@ public final class DictionarySettingsFragment extends PreferenceFragment final String key = matchLevelString + "." + description + "." + wordlistId; final WordListPreference existingPref = prefList.get(key); if (null == existingPref || hasPriority(status, existingPref.mStatus)) { - final WordListPreference pref = new WordListPreference(activity, mClientId, - wordlistId, version, locale, description, status); + final WordListPreference pref = new WordListPreference(activity, + mDictionaryListInterfaceState, mClientId, wordlistId, version, locale, + description, status); prefList.put(key, pref); } } while (cursor.moveToNext()); diff --git a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java index 48d8b144c..32825ba7f 100644 --- a/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java +++ b/java/src/com/android/inputmethod/dictionarypack/WordListPreference.java @@ -65,16 +65,19 @@ public final class WordListPreference extends Preference { static final private int ANIMATION_IN = 1; static final private int ANIMATION_OUT = 2; - private static String sLastClickedWordlistId = null; + private final DictionaryListInterfaceState mInterfaceState; private final OnWordListPreferenceClick mPreferenceClickHandler = new OnWordListPreferenceClick(); private final OnActionButtonClick mActionButtonClickHandler = new OnActionButtonClick(); - public WordListPreference(final Context context, final String clientId, final String wordlistId, - final int version, final Locale locale, final String description, final int status) { + public WordListPreference(final Context context, + final DictionaryListInterfaceState dictionaryListInterfaceState, final String clientId, + final String wordlistId, final int version, final Locale locale, + final String description, final int status) { super(context, null); mContext = context; + mInterfaceState = dictionaryListInterfaceState; mClientId = clientId; mVersion = version; mWordlistId = wordlistId; @@ -192,7 +195,8 @@ public final class WordListPreference extends Preference { final Button button = (Button)view.findViewById(R.id.wordlist_button); button.setText(getButtonLabel(mStatus)); // String identity match. This is an ==, not an .equals, on purpose. - button.setVisibility(mWordlistId == sLastClickedWordlistId ? View.VISIBLE : View.INVISIBLE); + button.setVisibility(mWordlistId == mInterfaceState.mLastClickedId + ? View.VISIBLE : View.INVISIBLE); button.setOnClickListener(mActionButtonClickHandler); view.setOnClickListener(mPreferenceClickHandler); } @@ -206,15 +210,15 @@ public final class WordListPreference extends Preference { if (!(parent instanceof ListView)) return; final ListView listView = (ListView)parent; final int indexToOpen; - if (sLastClickedWordlistId == mWordlistId) { + if (mInterfaceState.mLastClickedId == mWordlistId) { // This button was being shown. Clear last state to record that there isn't a // displayed button any more, and note that we don't want to open any button. - sLastClickedWordlistId = null; + mInterfaceState.mLastClickedId = null; indexToOpen = -1; } else { // This button was not being shown. Mark it as the latest selected button, and // remember the index of this child as the one to open in the following loop. - sLastClickedWordlistId = mWordlistId; + mInterfaceState.mLastClickedId = mWordlistId; indexToOpen = listView.indexOfChild(v); } final int lastDisplayedIndex =