[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
main
Jean Chalard 2013-04-24 13:18:01 +09:00
parent 43e8639e4e
commit c017f18a59
3 changed files with 40 additions and 9 deletions

View File

@ -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;
}

View File

@ -64,6 +64,8 @@ public final class DictionarySettingsFragment extends PreferenceFragment
private ConnectivityManager mConnectivityManager; private ConnectivityManager mConnectivityManager;
private MenuItem mUpdateNowMenu; private MenuItem mUpdateNowMenu;
private boolean mChangedSettings; private boolean mChangedSettings;
private DictionaryListInterfaceState mDictionaryListInterfaceState =
new DictionaryListInterfaceState();
private final BroadcastReceiver mConnectivityChangedReceiver = new BroadcastReceiver() { private final BroadcastReceiver mConnectivityChangedReceiver = new BroadcastReceiver() {
@Override @Override
@ -297,8 +299,9 @@ public final class DictionarySettingsFragment extends PreferenceFragment
final String key = matchLevelString + "." + description + "." + wordlistId; final String key = matchLevelString + "." + description + "." + wordlistId;
final WordListPreference existingPref = prefList.get(key); final WordListPreference existingPref = prefList.get(key);
if (null == existingPref || hasPriority(status, existingPref.mStatus)) { if (null == existingPref || hasPriority(status, existingPref.mStatus)) {
final WordListPreference pref = new WordListPreference(activity, mClientId, final WordListPreference pref = new WordListPreference(activity,
wordlistId, version, locale, description, status); mDictionaryListInterfaceState, mClientId, wordlistId, version, locale,
description, status);
prefList.put(key, pref); prefList.put(key, pref);
} }
} while (cursor.moveToNext()); } while (cursor.moveToNext());

View File

@ -65,16 +65,19 @@ public final class WordListPreference extends Preference {
static final private int ANIMATION_IN = 1; static final private int ANIMATION_IN = 1;
static final private int ANIMATION_OUT = 2; static final private int ANIMATION_OUT = 2;
private static String sLastClickedWordlistId = null; private final DictionaryListInterfaceState mInterfaceState;
private final OnWordListPreferenceClick mPreferenceClickHandler = private final OnWordListPreferenceClick mPreferenceClickHandler =
new OnWordListPreferenceClick(); new OnWordListPreferenceClick();
private final OnActionButtonClick mActionButtonClickHandler = private final OnActionButtonClick mActionButtonClickHandler =
new OnActionButtonClick(); new OnActionButtonClick();
public WordListPreference(final Context context, final String clientId, final String wordlistId, public WordListPreference(final Context context,
final int version, final Locale locale, final String description, final int status) { final DictionaryListInterfaceState dictionaryListInterfaceState, final String clientId,
final String wordlistId, final int version, final Locale locale,
final String description, final int status) {
super(context, null); super(context, null);
mContext = context; mContext = context;
mInterfaceState = dictionaryListInterfaceState;
mClientId = clientId; mClientId = clientId;
mVersion = version; mVersion = version;
mWordlistId = wordlistId; mWordlistId = wordlistId;
@ -192,7 +195,8 @@ public final class WordListPreference extends Preference {
final Button button = (Button)view.findViewById(R.id.wordlist_button); final Button button = (Button)view.findViewById(R.id.wordlist_button);
button.setText(getButtonLabel(mStatus)); button.setText(getButtonLabel(mStatus));
// String identity match. This is an ==, not an .equals, on purpose. // 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); button.setOnClickListener(mActionButtonClickHandler);
view.setOnClickListener(mPreferenceClickHandler); view.setOnClickListener(mPreferenceClickHandler);
} }
@ -206,15 +210,15 @@ public final class WordListPreference extends Preference {
if (!(parent instanceof ListView)) return; if (!(parent instanceof ListView)) return;
final ListView listView = (ListView)parent; final ListView listView = (ListView)parent;
final int indexToOpen; 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 // 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. // displayed button any more, and note that we don't want to open any button.
sLastClickedWordlistId = null; mInterfaceState.mLastClickedId = null;
indexToOpen = -1; indexToOpen = -1;
} else { } else {
// This button was not being shown. Mark it as the latest selected button, and // 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. // remember the index of this child as the one to open in the following loop.
sLastClickedWordlistId = mWordlistId; mInterfaceState.mLastClickedId = mWordlistId;
indexToOpen = listView.indexOfChild(v); indexToOpen = listView.indexOfChild(v);
} }
final int lastDisplayedIndex = final int lastDisplayedIndex =