Fix a DocsUI crash...
when user toggles multiwindow mode with an empty search widget. Also a
bit cleaning around Toolbar.
Bug: 34881838
Change-Id: Ib093ed5bf5e9f9a95d815119620ecddd84d428f7
diff --git a/res/layout/drawer_layout.xml b/res/layout/drawer_layout.xml
index 32ba6d0..8eefa3e 100644
--- a/res/layout/drawer_layout.xml
+++ b/res/layout/drawer_layout.xml
@@ -32,7 +32,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
- <com.android.documentsui.DocumentsToolbar
+ <Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
@@ -50,7 +50,7 @@
android:background="@android:color/transparent"
android:overlapAnchor="true" />
- </com.android.documentsui.DocumentsToolbar>
+ </Toolbar>
<FrameLayout
android:layout_width="match_parent"
diff --git a/res/layout/fixed_layout.xml b/res/layout/fixed_layout.xml
index 9882e94..ffcc940 100644
--- a/res/layout/fixed_layout.xml
+++ b/res/layout/fixed_layout.xml
@@ -30,7 +30,7 @@
android:layout_height="match_parent"
android:orientation="vertical">
- <com.android.documentsui.DocumentsToolbar
+ <Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
@@ -45,7 +45,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content" />
- </com.android.documentsui.DocumentsToolbar>
+ </Toolbar>
<LinearLayout
android:layout_width="match_parent"
diff --git a/src/com/android/documentsui/BaseActivity.java b/src/com/android/documentsui/BaseActivity.java
index c4dc810..f799515 100644
--- a/src/com/android/documentsui/BaseActivity.java
+++ b/src/com/android/documentsui/BaseActivity.java
@@ -39,6 +39,7 @@
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
+import android.widget.Toolbar;
import com.android.documentsui.AbstractActionHandler.CommonAddons;
import com.android.documentsui.Injector.Injected;
@@ -140,7 +141,7 @@
mRoots = DocumentsApplication.getRootsCache(this);
mDocs = DocumentsAccess.create(this);
- DocumentsToolbar toolbar = (DocumentsToolbar) findViewById(R.id.toolbar);
+ Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setActionBar(toolbar);
Breadcrumb breadcrumb =
@@ -227,7 +228,7 @@
getMenuInflater().inflate(R.menu.activity, menu);
mNavigator.update();
boolean fullBarSearch = getResources().getBoolean(R.bool.full_bar_search_view);
- mSearchManager.install((DocumentsToolbar) findViewById(R.id.toolbar), fullBarSearch);
+ mSearchManager.install(menu, fullBarSearch);
return showMenu;
}
diff --git a/src/com/android/documentsui/DocumentsToolbar.java b/src/com/android/documentsui/DocumentsToolbar.java
deleted file mode 100644
index 7742cbf..0000000
--- a/src/com/android/documentsui/DocumentsToolbar.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.documentsui;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.MenuItem;
-import android.widget.Toolbar;
-
-/**
- * ToolBar of Documents UI.
- */
-public class DocumentsToolbar extends Toolbar {
- interface OnActionViewCollapsedListener {
- void onActionViewCollapsed();
- }
-
- private OnActionViewCollapsedListener mOnActionViewCollapsedListener;
-
- public DocumentsToolbar(Context context, AttributeSet attrs,
- int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- public DocumentsToolbar(Context context, AttributeSet attrs,
- int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- }
-
- public DocumentsToolbar(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public DocumentsToolbar(Context context) {
- super(context);
- }
-
- @Override
- public void collapseActionView() {
- super.collapseActionView();
- if (mOnActionViewCollapsedListener != null) {
- mOnActionViewCollapsedListener.onActionViewCollapsed();
- }
- }
-
- /**
- * Adds a listener that is invoked after collapsing the action view.
- * @param listener
- */
- public void setOnActionViewCollapsedListener(
- OnActionViewCollapsedListener listener) {
- mOnActionViewCollapsedListener = listener;
- }
-
- public MenuItem getSearchMenu() {
- return getMenu().findItem(R.id.menu_search);
- }
-}
diff --git a/src/com/android/documentsui/NavigationViewManager.java b/src/com/android/documentsui/NavigationViewManager.java
index 694381e..f0faaa4 100644
--- a/src/com/android/documentsui/NavigationViewManager.java
+++ b/src/com/android/documentsui/NavigationViewManager.java
@@ -22,6 +22,7 @@
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.View;
+import android.widget.Toolbar;
import com.android.documentsui.base.RootInfo;
import com.android.documentsui.base.State;
@@ -36,15 +37,15 @@
private static final String TAG = "NavigationViewManager";
- final DrawerController mDrawer;
- final DocumentsToolbar mToolbar;
- final State mState;
- final NavigationViewManager.Environment mEnv;
- final Breadcrumb mBreadcrumb;
+ private final DrawerController mDrawer;
+ private final Toolbar mToolbar;
+ private final State mState;
+ private final NavigationViewManager.Environment mEnv;
+ private final Breadcrumb mBreadcrumb;
public NavigationViewManager(
DrawerController drawer,
- DocumentsToolbar toolbar,
+ Toolbar toolbar,
State state,
NavigationViewManager.Environment env,
Breadcrumb breadcrumb) {
diff --git a/src/com/android/documentsui/queries/SearchViewManager.java b/src/com/android/documentsui/queries/SearchViewManager.java
index 61e07b2..5af97cd 100644
--- a/src/com/android/documentsui/queries/SearchViewManager.java
+++ b/src/com/android/documentsui/queries/SearchViewManager.java
@@ -32,7 +32,6 @@
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;
-import com.android.documentsui.DocumentsToolbar;
import com.android.documentsui.R;
import com.android.documentsui.base.DocumentInfo;
import com.android.documentsui.base.DocumentStack;
@@ -56,7 +55,7 @@
private boolean mIgnoreNextClose;
private boolean mFullBar;
- private DocumentsToolbar mActionBar;
+ private Menu mMenu;
private MenuItem mMenuItem;
private SearchView mSearchView;
@@ -73,9 +72,9 @@
mCurrentSearch = savedState != null ? savedState.getString(Shared.EXTRA_QUERY) : null;
}
- public void install(DocumentsToolbar actionBar, boolean isFullBarSearch) {
- mActionBar = actionBar;
- mMenuItem = actionBar.getSearchMenu();
+ public void install(Menu menu, boolean isFullBarSearch) {
+ mMenu = menu;
+ mMenuItem = mMenu.findItem(R.id.menu_search);
mSearchView = (SearchView) mMenuItem.getActionView();
mSearchView.setOnQueryTextListener(this);
@@ -99,8 +98,7 @@
*/
public void updateMenu() {
if (isSearching() && mFullBar) {
- Menu menu = mActionBar.getMenu();
- menu.setGroupVisible(R.id.group_hide_when_searching, false);
+ mMenu.setGroupVisible(R.id.group_hide_when_searching, false);
}
}
@@ -203,8 +201,7 @@
private void onSearchExpanded() {
mSearchExpanded = true;
if(mFullBar) {
- Menu menu = mActionBar.getMenu();
- menu.setGroupVisible(R.id.group_hide_when_searching, false);
+ mMenu.setGroupVisible(R.id.group_hide_when_searching, false);
}
mListener.onSearchViewChanged(true);
@@ -291,8 +288,7 @@
@Override
public boolean onMenuItemActionCollapse(MenuItem item) {
- Menu menu = mActionBar.getMenu();
- menu.setGroupVisible(R.id.group_hide_when_searching, true);
+ mMenu.setGroupVisible(R.id.group_hide_when_searching, true);
// Handles case when search view is collapsed by using the arrow on the left of the bar
if (isExpanded() || isSearching()) {