From d033dead22b83cdf61a53d48c99653c28cb8db61 Mon Sep 17 00:00:00 2001 From: twyen Date: Mon, 25 Sep 2017 17:06:53 -0700 Subject: Fix onVisible/onNotVisible called on CallLogFragment without being attahced after rotation mCurrentPage is set onResume before the fragment is attached. In this CL, mCurrentPage is still used for page change, but for resume and pause, it is detected directly in CallLogFragment using getUserVisibleHint() Bug: 65161134 Test: manual - change call volume after rotation, check ToS FAB not visible after rotation. CallLogFragment is not testable. PiperOrigin-RevId: 169984576 Change-Id: I870cbe3b83e38ac2cb505193309ab4f8e75a859f --- java/com/android/dialer/app/calllog/CallLogFragment.java | 9 ++++++++- java/com/android/dialer/app/list/ListsFragment.java | 12 +++--------- 2 files changed, 11 insertions(+), 10 deletions(-) (limited to 'java/com/android/dialer/app') diff --git a/java/com/android/dialer/app/calllog/CallLogFragment.java b/java/com/android/dialer/app/calllog/CallLogFragment.java index 8ed924d76..a82afa5fe 100644 --- a/java/com/android/dialer/app/calllog/CallLogFragment.java +++ b/java/com/android/dialer/app/calllog/CallLogFragment.java @@ -411,11 +411,18 @@ public class CallLogFragment extends Fragment mAdapter.onResume(); rescheduleDisplayUpdate(); + // onResume() may also be called as a "side" page on the ViewPager, which is not visible. + if (getUserVisibleHint()) { + onVisible(); + } } @Override public void onPause() { LogUtil.enterBlock("CallLogFragment.onPause"); + if (getUserVisibleHint()) { + onNotVisible(); + } cancelDisplayUpdate(); mAdapter.onPause(); super.onPause(); @@ -594,7 +601,7 @@ public class CallLogFragment extends Fragment @CallSuper public void onVisible() { LogUtil.enterBlock("CallLogFragment.onPageSelected"); - if (getActivity() != null) { + if (getActivity() != null && getActivity() instanceof HostInterface) { ((HostInterface) getActivity()) .enableFloatingButton(mModalAlertManager == null || mModalAlertManager.isEmpty()); } diff --git a/java/com/android/dialer/app/list/ListsFragment.java b/java/com/android/dialer/app/list/ListsFragment.java index 8dbe18cee..a94f9c137 100644 --- a/java/com/android/dialer/app/list/ListsFragment.java +++ b/java/com/android/dialer/app/list/ListsFragment.java @@ -107,7 +107,7 @@ public class ListsFragment extends Fragment implements OnPageChangeListener, Lis @Override public void onResume() { - LogUtil.d("ListsFragment.onResume", null); + LogUtil.enterBlock("ListsFragment.onResume"); Trace.beginSection(TAG + " onResume"); super.onResume(); @@ -124,17 +124,11 @@ public class ListsFragment extends Fragment implements OnPageChangeListener, Lis mCallLogQueryHandler.fetchMissedCallsUnreadCount(); Trace.endSection(); mCurrentPage = mAdapter.getItem(mViewPager.getCurrentItem()); - if (mCurrentPage instanceof CallLogFragment) { - ((CallLogFragment) mCurrentPage).onVisible(); - } } @Override public void onPause() { - LogUtil.d("ListsFragment.onPause", null); - if (mCurrentPage instanceof CallLogFragment) { - ((CallLogFragment) mCurrentPage).onNotVisible(); - } + LogUtil.enterBlock("ListsFragment.onPause"); super.onPause(); mPaused = true; @@ -149,7 +143,7 @@ public class ListsFragment extends Fragment implements OnPageChangeListener, Lis @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - LogUtil.d("ListsFragment.onCreateView", null); + LogUtil.enterBlock("ListsFragment.onCreateView"); Trace.beginSection(TAG + " onCreateView"); Trace.beginSection(TAG + " inflate view"); final View parentView = inflater.inflate(R.layout.lists_fragment, container, false); -- cgit v1.2.3