summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java52
1 files changed, 32 insertions, 20 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index 6297052550c3..8c5e2ceaeadf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -375,6 +375,34 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
}
};
+ private static class NavBarViewAttachedListener implements View.OnAttachStateChangeListener {
+ private NavigationBarFragment mFragment;
+ private FragmentListener mListener;
+
+ NavBarViewAttachedListener(NavigationBarFragment fragment, FragmentListener listener) {
+ mFragment = fragment;
+ mListener = listener;
+ }
+
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ final FragmentHostManager fragmentHost = FragmentHostManager.get(v);
+ fragmentHost.getFragmentManager().beginTransaction()
+ .replace(R.id.navigation_bar_frame, mFragment, TAG)
+ .commit();
+ fragmentHost.addTagListener(TAG, mListener);
+ mFragment = null;
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ final FragmentHostManager fragmentHost = FragmentHostManager.get(v);
+ fragmentHost.removeTagListener(TAG, mListener);
+ FragmentHostManager.removeAndDestroy(v);
+ v.removeOnAttachStateChangeListener(this);
+ }
+ }
+
private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
new DeviceConfig.OnPropertiesChangedListener() {
@Override
@@ -1470,26 +1498,10 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
if (DEBUG) Log.v(TAG, "addNavigationBar: about to add " + navigationBarView);
if (navigationBarView == null) return null;
- navigationBarView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
- @Override
- public void onViewAttachedToWindow(View v) {
- final NavigationBarFragment fragment =
- FragmentHostManager.get(v).create(NavigationBarFragment.class);
- final FragmentHostManager fragmentHost = FragmentHostManager.get(v);
- fragmentHost.getFragmentManager().beginTransaction()
- .replace(R.id.navigation_bar_frame, fragment, TAG)
- .commit();
- fragmentHost.addTagListener(TAG, listener);
- }
-
- @Override
- public void onViewDetachedFromWindow(View v) {
- final FragmentHostManager fragmentHost = FragmentHostManager.get(v);
- fragmentHost.removeTagListener(TAG, listener);
- FragmentHostManager.removeAndDestroy(v);
- navigationBarView.removeOnAttachStateChangeListener(this);
- }
- });
+ NavigationBarFragment fragment = FragmentHostManager.get(navigationBarView)
+ .create(NavigationBarFragment.class);
+ navigationBarView.addOnAttachStateChangeListener(new NavBarViewAttachedListener(fragment,
+ listener));
context.getSystemService(WindowManager.class).addView(navigationBarView, lp);
return navigationBarView;
}