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)
diff --git a/src/com/android/settings/nfc/AndroidBeam.java b/src/com/android/settings/nfc/AndroidBeam.java
index 2d8d6fe..eb3ff9b 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 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 @@
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);
}