diff options
author | Narayan Kamath <narayan@google.com> | 2012-01-20 17:52:02 +0000 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2012-01-20 17:52:02 +0000 |
commit | 2d8101bc8bb27c3c7e090f706ac40a3612507813 (patch) | |
tree | bc56194b7c7a1c37eb3fb325760e1a4c73227d59 | |
parent | af48709993faeb0d3665eb6a491aaec701e1ccd5 (diff) | |
download | packages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.zip packages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.tar.gz packages_apps_settings-2d8101bc8bb27c3c7e090f706ac40a3612507813.tar.bz2 |
Fix a pseudo race condition in TtsEngineSettingsFragment.
The issue is that Fragment.setVoiceDataDetails can
be called before Fragment.getView. We guard against this
issue. No thread visibility issues here because both functions
are called on the UI thread.
bug:5884355
Change-Id: Iad91b91c58b04dcb9f34f6b5ff8752f2e8295423
-rw-r--r-- | src/com/android/settings/tts/TtsEnginePreference.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/com/android/settings/tts/TtsEnginePreference.java b/src/com/android/settings/tts/TtsEnginePreference.java index b98a239..196882f 100644 --- a/src/com/android/settings/tts/TtsEnginePreference.java +++ b/src/com/android/settings/tts/TtsEnginePreference.java @@ -155,12 +155,21 @@ public class TtsEnginePreference extends Preference { } }); + if (mVoiceCheckData != null) { + mSettingsIcon.setEnabled(mRadioButton.isChecked()); + } + return view; } public void setVoiceDataDetails(Intent data) { mVoiceCheckData = data; - mSettingsIcon.setEnabled(mRadioButton.isChecked()); + // This might end up running before getView aboive, in which + // case mSettingsIcon && mRadioButton will be null. In this case + // getView will set the right values. + if (mSettingsIcon != null && mRadioButton != null) { + mSettingsIcon.setEnabled(mRadioButton.isChecked()); + } } private void onRadioButtonClicked(CompoundButton buttonView, boolean isChecked) { |