Fix a crasher on the most visited page when the history is empty.
Make sure that the empty view is always available by setting it
as the content view, and adding the list or grid. Fixes
http://b/issue?id=2041975
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index cf2dbc0..7e72ae9 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -238,9 +238,11 @@
getIntent().getStringExtra("url"),
getIntent().getStringExtra("title"), mCreateShortcut,
mMostVisited);
- if (mMostVisited) {
- mEmptyView = new ViewStub(this, R.layout.empty_history);
- }
+
+ setContentView(R.layout.empty_history);
+ mEmptyView = findViewById(R.id.empty_view);
+ mEmptyView.setVisibility(View.GONE);
+
switchViewMode(true);
}
@@ -271,15 +273,16 @@
mGridPage.setOnCreateContextMenuListener(this);
}
}
- setContentView(mGridPage);
+ addContentView(mGridPage, FULL_SCREEN_PARAMS);
+ if (mVerticalList != null) {
+ ViewGroup parent = (ViewGroup) mVerticalList.getParent();
+ if (parent != null) {
+ parent.removeView(mVerticalList);
+ }
+ }
} else {
if (null == mVerticalList) {
- LayoutInflater factory = LayoutInflater.from(this);
- mVerticalList = factory.inflate(R.layout.browser_bookmarks_page,
- null);
-
- ListView listView
- = (ListView) mVerticalList.findViewById(R.id.list);
+ ListView listView = new ListView(this);
listView.setAdapter(mBookmarksAdapter);
listView.setDrawSelectorOnTop(false);
listView.setVerticalScrollBarEnabled(true);
@@ -287,19 +290,26 @@
if (mMostVisited) {
listView.setEmptyView(mEmptyView);
}
-
if (!mCreateShortcut) {
listView.setOnCreateContextMenuListener(this);
}
+ mVerticalList = listView;
}
- setContentView(mVerticalList);
- }
- if (mMostVisited) {
- addContentView(mEmptyView, new LayoutParams(
- LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
+ addContentView(mVerticalList, FULL_SCREEN_PARAMS);
+ if (mGridPage != null) {
+ ViewGroup parent = (ViewGroup) mGridPage.getParent();
+ if (parent != null) {
+ parent.removeView(mGridPage);
+ }
+ }
}
}
+ private static final ViewGroup.LayoutParams FULL_SCREEN_PARAMS
+ = new ViewGroup.LayoutParams(
+ ViewGroup.LayoutParams.FILL_PARENT,
+ ViewGroup.LayoutParams.FILL_PARENT);
+
private static final int SAVE_CURRENT_PAGE = 1000;
private final Handler mHandler = new Handler() {
@Override