diff options
author | Yiqun Wu <yiqunw@google.com> | 2019-07-29 17:11:56 -0700 |
---|---|---|
committer | Yiqun Wu <yiqunw@google.com> | 2019-08-01 16:20:39 -0700 |
commit | 45fd4c8c310ba2802184ce388e720b023cdee9dc (patch) | |
tree | 8f5d5df7349e5240f6e14bc701b44bec7b0c8815 /src/com/android | |
parent | 31c1e28a2ed2149fad6bc734ca103982a3369b07 (diff) | |
download | platform_packages_apps_Car_Dialer-45fd4c8c310ba2802184ce388e720b023cdee9dc.tar.gz platform_packages_apps_Car_Dialer-45fd4c8c310ba2802184ce388e720b023cdee9dc.tar.bz2 platform_packages_apps_Car_Dialer-45fd4c8c310ba2802184ce388e720b023cdee9dc.zip |
Set up action bar on back stack change.
Cleanup the action bar set up in search page.
No need to set background on fragment resume.
Bug: 138810581
Test: manually
Change-Id: I396142a87103eea2ce797b90f9ca469f981784f0
Diffstat (limited to 'src/com/android')
6 files changed, 21 insertions, 60 deletions
diff --git a/src/com/android/car/dialer/ui/TelecomActivity.java b/src/com/android/car/dialer/ui/TelecomActivity.java index 32737d11..10e37b93 100644 --- a/src/com/android/car/dialer/ui/TelecomActivity.java +++ b/src/com/android/car/dialer/ui/TelecomActivity.java @@ -362,6 +362,12 @@ public class TelecomActivity extends FragmentActivity implements : R.style.RootToolbarDisplayOptions, android.R.attr.displayOptions); getActionBar().setDisplayOptions(displayOptions); + + Fragment topFragment = getSupportFragmentManager().findFragmentById( + R.id.content_fragment_container); + if (topFragment instanceof DialerBaseFragment) { + ((DialerBaseFragment) topFragment).setupActionBar(getActionBar()); + } } @Override diff --git a/src/com/android/car/dialer/ui/common/DialerBaseFragment.java b/src/com/android/car/dialer/ui/common/DialerBaseFragment.java index 2eb276f9..fb7a4a4d 100644 --- a/src/com/android/car/dialer/ui/common/DialerBaseFragment.java +++ b/src/com/android/car/dialer/ui/common/DialerBaseFragment.java @@ -18,7 +18,6 @@ package com.android.car.dialer.ui.common; import android.app.ActionBar; import android.app.Activity; -import android.graphics.drawable.ColorDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.View; @@ -52,44 +51,13 @@ public abstract class DialerBaseFragment extends Fragment { setHasOptionsMenu(true); } - @Override - public void onResume() { - setFullScreenBackground(); - - Activity parentActivity = getActivity(); - ActionBar actionBar = parentActivity.getActionBar(); - if (actionBar != null) { - setupActionBar(actionBar); - } - - super.onResume(); - } - - /** - * Sets a fullscreen background to its parent Activity. - */ - protected void setFullScreenBackground() { - Activity parentActivity = getActivity(); - if (parentActivity instanceof DialerFragmentParent) { - ((DialerFragmentParent) parentActivity).setBackground(getFullScreenBackgroundColor()); - } - } - /** Customizes the action bar. Can be overridden in subclasses. */ - protected void setupActionBar(@NonNull ActionBar actionBar) { + public void setupActionBar(@NonNull ActionBar actionBar) { actionBar.setTitle(getActionBarTitle()); actionBar.setCustomView(null); setActionBarBackground(getContext().getDrawable(R.color.app_bar_background_color)); } - /** - * Returns the full screen background for its parent Activity. Override this function to - * change the background. - */ - protected Drawable getFullScreenBackgroundColor() { - return new ColorDrawable(Themes.getAttrColor(getContext(), android.R.attr.background)); - } - /** Push a fragment to the back stack. Update action bar accordingly. */ protected void pushContentFragment(@NonNull Fragment fragment, String fragmentTag) { Activity parentActivity = getActivity(); diff --git a/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java b/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java index ccfc003d..d80fb9ff 100644 --- a/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java +++ b/src/com/android/car/dialer/ui/contact/ContactDetailsFragment.java @@ -137,7 +137,7 @@ public class ContactDetailsFragment extends DialerListBaseFragment implements } @Override - protected void setupActionBar(@NonNull ActionBar actionBar) { + public void setupActionBar(@NonNull ActionBar actionBar) { actionBar.setCustomView(R.layout.contact_details_action_bar); actionBar.setTitle(null); diff --git a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java index 1adcc5ee..439f8449 100644 --- a/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/DialpadFragment.java @@ -160,7 +160,7 @@ public class DialpadFragment extends AbstractDialpadFragment { } @Override - protected void setupActionBar(ActionBar actionBar) { + public void setupActionBar(ActionBar actionBar) { // Only setup the actionbar if we're in dial mode. // In all the other modes, there will be another fragment in the activity // at the same time, and we don't want to mess up it's action bar. diff --git a/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java b/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java index 37868069..77e606a5 100644 --- a/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java +++ b/src/com/android/car/dialer/ui/dialpad/InCallDialpadFragment.java @@ -108,7 +108,7 @@ public class InCallDialpadFragment extends AbstractDialpadFragment { } @Override - protected void setupActionBar(ActionBar actionBar) { + public void setupActionBar(ActionBar actionBar) { // No-op } diff --git a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java index 56b72930..eb286fea 100644 --- a/src/com/android/car/dialer/ui/search/ContactResultsFragment.java +++ b/src/com/android/car/dialer/ui/search/ContactResultsFragment.java @@ -17,6 +17,8 @@ package com.android.car.dialer.ui.search; import android.app.ActionBar; +import android.app.SearchManager; +import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.text.TextUtils; @@ -69,8 +71,6 @@ public class ContactResultsFragment extends DialerListBaseFragment implements private RecyclerView.OnScrollListener mOnScrollChangeListener; private SearchView mSearchView; - private boolean mKeyboardShown = false; - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -89,15 +89,6 @@ public class ContactResultsFragment extends DialerListBaseFragment implements } getArguments().clear(); } - - if (savedInstanceState != null) { - mKeyboardShown = savedInstanceState.getBoolean(KEY_KEYBOARD_SHOWN, false); - } - } - - @Override - public void onSaveInstanceState(Bundle savedInstanceState) { - savedInstanceState.putBoolean(KEY_KEYBOARD_SHOWN, mKeyboardShown); } @Override @@ -131,29 +122,25 @@ public class ContactResultsFragment extends DialerListBaseFragment implements } @Override - protected void setupActionBar(@NonNull ActionBar actionBar) { + public void setupActionBar(@NonNull ActionBar actionBar) { super.setupActionBar(actionBar); // We have to use the setCustomView that accepts a LayoutParams to get the SearchView - // to take up the full height and width of the action bar + // to take up the full height and width of the action bar. View v = getLayoutInflater().inflate(R.layout.search_view, null); actionBar.setCustomView(v, new ActionBar.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); SearchView searchView = actionBar.getCustomView().findViewById(R.id.search_view); + SearchManager searchManager = + (SearchManager) getContext().getSystemService(Context.SEARCH_SERVICE); + searchView.setSearchableInfo( + searchManager.getSearchableInfo(getActivity().getComponentName())); // We need to call setIconified(false) so the SearchView is a text box instead of just - // an icon, but doing so also focuses on it and shows the keyboard. The first time we - // enter the fragment that's fine, but every time after we have to clearFocus() so the - // keyboard isn't shown. + // an icon, but doing so also focuses on it and shows the keyboard. searchView.setIconified(false); - if (mKeyboardShown) { - searchView.clearFocus(); - } else { - mKeyboardShown = true; - } - searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { @@ -177,8 +164,8 @@ public class ContactResultsFragment extends DialerListBaseFragment implements } @Override - public void onPause() { - super.onPause(); + public void onStop() { + super.onStop(); mSearchView.clearFocus(); } |