From 962a141f4c67fdb02d9062530f5f9e9cfb5e674a Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Thu, 22 May 2014 19:29:31 -0700 Subject: [PATCH] Fix bug #15173703 Crash in Settings is observed when Android Beam page orientation is changed. DO NOT MERGE - use onActivityCreated() / onResume() / onPause() for the SwitchBar Change-Id: I24b346fdc5c19acedbe845d3b7697718412b5e5d (cherry picked from commit 4c42a88828a8df9e00ce66216fe0ef9f0d89464d) --- src/com/android/settings/nfc/AndroidBeam.java | 40 ++++++++++++++----- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java index 2d8d6fe3326..eb3ff9bbce2 100644 --- a/src/com/android/settings/nfc/AndroidBeam.java +++ b/src/com/android/settings/nfc/AndroidBeam.java @@ -16,6 +16,7 @@ package com.android.settings.nfc; +import android.app.ActionBar; import android.app.Fragment; import android.nfc.NfcAdapter; import android.os.Bundle; @@ -39,16 +40,12 @@ public class AndroidBeam extends Fragment public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - SettingsActivity activity = (SettingsActivity) getActivity(); + final ActionBar actionBar = getActivity().getActionBar(); - mOldActivityTitle = activity.getActionBar().getTitle(); - activity.getActionBar().setTitle(R.string.android_beam_settings_title); + mOldActivityTitle = actionBar.getTitle(); + actionBar.setTitle(R.string.android_beam_settings_title); mNfcAdapter = NfcAdapter.getDefaultAdapter(getActivity()); - - mSwitchBar = activity.getSwitchBar(); - mSwitch = mSwitchBar.getSwitch(); - mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled()); } @Override @@ -56,18 +53,39 @@ public class AndroidBeam extends Fragment Bundle savedInstanceState) { mView = inflater.inflate(R.layout.android_beam, container, false); + return mView; + } + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + + SettingsActivity activity = (SettingsActivity) getActivity(); + + mSwitchBar = activity.getSwitchBar(); + mSwitch = mSwitchBar.getSwitch(); + mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled()); + } + + @Override + public void onResume() { + super.onResume(); + mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.show(); - mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled()); + } - return mView; + @Override + public void onPause() { + super.onPause(); + + mSwitchBar.removeOnSwitchChangeListener(this); + mSwitchBar.hide(); } @Override public void onDestroyView() { super.onDestroyView(); - mSwitchBar.removeOnSwitchChangeListener(this); - mSwitchBar.hide(); if (mOldActivityTitle != null) { getActivity().getActionBar().setTitle(mOldActivityTitle); }