jenkins-bot has submitted this change and it was merged.
Change subject: Fix possible crash involving the main ProgressBar.
......................................................................
Fix possible crash involving the main ProgressBar.
Slightly refactored and centralized access to the progress bar from
various fragments. Also, posting the progress bar updates to the message
queue, since it could be called from within Activity.onCreate, where on
some devices the progress bar is not yet created.
Bug: 72817
Change-Id: I021123193c8942af52011f1e9c6f347b9c28ed49
---
M wikipedia/res/layout/fragment_nearby.xml
M wikipedia/src/main/java/org/wikipedia/nearby/NearbyFragment.java
M wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
M wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
M wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
M wikipedia/src/main/java/org/wikipedia/search/TitleSearchFragment.java
6 files changed, 33 insertions(+), 30 deletions(-)
Approvals:
BearND: Looks good to me, approved
Cscott: Looks good to me, approved
jenkins-bot: Verified
diff --git a/wikipedia/res/layout/fragment_nearby.xml
b/wikipedia/res/layout/fragment_nearby.xml
index 65025d8..3d8fe70 100644
--- a/wikipedia/res/layout/fragment_nearby.xml
+++ b/wikipedia/res/layout/fragment_nearby.xml
@@ -54,10 +54,4 @@
android:layout_height="match_parent"
/>
- <ProgressBar
- android:id="@+id/nearby_loading_container"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center" />
-
</FrameLayout>
diff --git a/wikipedia/src/main/java/org/wikipedia/nearby/NearbyFragment.java
b/wikipedia/src/main/java/org/wikipedia/nearby/NearbyFragment.java
index 066c17d..58af951 100644
--- a/wikipedia/src/main/java/org/wikipedia/nearby/NearbyFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/nearby/NearbyFragment.java
@@ -72,7 +72,6 @@
private ViewGroup nearbyContainer;
private ListView nearbyList;
- private View nearbyLoadingContainer;
private View nearbyEmptyContainer;
private NearbyAdapter adapter;
@@ -124,7 +123,6 @@
nearbyContainer = (ViewGroup)
rootView.findViewById(R.id.nearby_container);
nearbyList = (ListView) rootView.findViewById(R.id.nearby_list);
- nearbyLoadingContainer =
rootView.findViewById(R.id.nearby_loading_container);
nearbyEmptyContainer =
rootView.findViewById(R.id.nearby_empty_container);
nearbyEmptyContainer.setVisibility(View.GONE);
@@ -135,7 +133,6 @@
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
nearbyList.setAdapter(adapter);
- nearbyList.setEmptyView(nearbyLoadingContainer);
nearbyList.setOnItemClickListener(new
AdapterView.OnItemClickListener() {
@Override
@@ -435,9 +432,9 @@
private void setRefreshingState(boolean newState) {
refreshing = newState;
if (refreshing) {
- nearbyLoadingContainer.setVisibility(View.VISIBLE);
+ ((PageActivity)getActivity()).updateProgressBar(true, true, 0);
} else {
- nearbyLoadingContainer.setVisibility(View.GONE);
+ ((PageActivity)getActivity()).updateProgressBar(false, true, 0);
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
getActivity().invalidateOptionsMenu();
diff --git a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
index 72a18df..2a32f05 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageActivity.java
@@ -325,6 +325,24 @@
}
/**
+ * Update the state of the main progress bar that is shown inside the
ActionBar of the activity.
+ * @param visible Whether the progress bar is visible.
+ * @param indeterminate Whether the progress bar is indeterminate.
+ * @param value Value of the progress bar (may be between 0 and 10000).
Ignored if the
+ * progress bar is indeterminate.
+ */
+ public void updateProgressBar(final boolean visible, final boolean
indeterminate, final int value) {
+ fragmentContainerView.post(new Runnable() {
+ @Override
+ public void run() {
+ setSupportProgressBarIndeterminate(indeterminate);
+ setSupportProgress(value);
+ setSupportProgressBarVisibility(visible);
+ }
+ });
+ }
+
+ /**
* Returns whether we're currently in a "searching" state (i.e. the search
fragment is shown).
* @return True if currently searching, false otherwise.
*/
@@ -367,7 +385,7 @@
getSupportActionBar().show();
}
//also make sure the progress bar is not showing
- setSupportProgressBarVisibility(false);
+ updateProgressBar(false, true, 0);
}
/**
@@ -383,7 +401,7 @@
getSupportActionBar().show();
}
//also make sure the progress bar is not showing
- setSupportProgressBarVisibility(false);
+ updateProgressBar(false, true, 0);
}
private void displayNewPage(final PageTitle title, final HistoryEntry
entry) {
diff --git
a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
index ad9f2b8..2d48557 100644
--- a/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
+++ b/wikipedia/src/main/java/org/wikipedia/page/PageViewFragmentInternal.java
@@ -223,13 +223,11 @@
ViewAnimations.fadeIn(webView);
}
- getActivity().setSupportProgressBarIndeterminate(true);
- getActivity().setSupportProgressBarVisibility(true);
+ getActivity().updateProgressBar(true, true, 0);
}
private void displayNonLeadSection(int index) {
- getActivity().setSupportProgressBarIndeterminate(false);
- getActivity().setSupportProgress(MAX_PROGRESS_VALUE /
page.getSections().size() * index);
+ getActivity().updateProgressBar(true, false, MAX_PROGRESS_VALUE /
page.getSections().size() * index);
try {
JSONObject wrapper = new JSONObject();
@@ -428,7 +426,7 @@
return;
}
// Do any other stuff that should happen upon page load
completion...
- getActivity().setSupportProgressBarVisibility(false);
+ getActivity().updateProgressBar(false, true, 0);
}
});
}
@@ -452,9 +450,7 @@
private void performActionForState(int forState) {
switch (forState) {
case STATE_NO_FETCH:
- getActivity().setSupportProgressBarIndeterminate(true);
- getActivity().setSupportProgressBarVisibility(true);
-
+ getActivity().updateProgressBar(true, true, 0);
bridge.sendMessage("clearContents", new JSONObject());
if (curEntry.getSource() == HistoryEntry.SOURCE_SAVED_PAGE) {
loadSavedPage();
@@ -757,7 +753,7 @@
}
// in any case, make sure the TOC drawer is closed and disabled
tocDrawer.setSlidingEnabled(false);
- getActivity().setSupportProgressBarVisibility(false);
+ getActivity().updateProgressBar(false, true, 0);
if (caught instanceof SectionsFetchException) {
if (((SectionsFetchException)
caught).getCode().equals("missingtitle")
diff --git
a/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
b/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
index a41ccb4..fda5370 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/FullSearchFragment.java
@@ -188,7 +188,7 @@
}
searchResultsContainer.setVisibility(View.VISIBLE);
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(false);
+ ((PageActivity)getActivity()).updateProgressBar(false, true,
0);
if (lastResults.getResults().size() == 0) {
searchNoResults.setVisibility(View.VISIBLE);
searchResultsList.setVisibility(View.GONE);
@@ -215,7 +215,7 @@
if (!isAdded()) {
return;
}
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(false);
+ ((PageActivity)getActivity()).updateProgressBar(false, true,
0);
if (continueOffset == 0) {
searchResultsContainer.setVisibility(View.GONE);
@@ -227,8 +227,7 @@
@Override
public void onBeforeExecute() {
-
((PageActivity)getActivity()).setSupportProgressBarIndeterminate(true);
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(true);
+ ((PageActivity)getActivity()).updateProgressBar(true, true, 0);
if (continueOffset == 0) {
searchResultsContainer.setVisibility(View.GONE);
searchNoResults.setVisibility(View.GONE);
diff --git
a/wikipedia/src/main/java/org/wikipedia/search/TitleSearchFragment.java
b/wikipedia/src/main/java/org/wikipedia/search/TitleSearchFragment.java
index 49dc1bc..2990e72 100644
--- a/wikipedia/src/main/java/org/wikipedia/search/TitleSearchFragment.java
+++ b/wikipedia/src/main/java/org/wikipedia/search/TitleSearchFragment.java
@@ -264,8 +264,7 @@
TitleSearchTask searchTask = new TitleSearchTask(app,
app.getAPIForSite(app.getPrimarySite()), app.getPrimarySite(), mySearchTerm) {
@Override
public void onBeforeExecute() {
-
((PageActivity)getActivity()).setSupportProgressBarIndeterminate(true);
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(true);
+ ((PageActivity)getActivity()).updateProgressBar(true,
true, 0);
}
@Override
@@ -273,7 +272,7 @@
if (!isAdded()) {
return;
}
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(false);
+ ((PageActivity)getActivity()).updateProgressBar(false,
true, 0);
searchNetworkError.setVisibility(View.GONE);
displayResults(result);
searchResultsCache.put(app.getPrimaryLanguage() + "-" +
mySearchTerm, result);
@@ -296,7 +295,7 @@
if (!isAdded()) {
return;
}
-
((PageActivity)getActivity()).setSupportProgressBarVisibility(false);
+ ((PageActivity)getActivity()).updateProgressBar(false,
true, 0);
searchNetworkError.setVisibility(View.VISIBLE);
searchResultsList.setVisibility(View.GONE);
curSearchTask = null;
--
To view, visit https://gerrit.wikimedia.org/r/170332
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: I021123193c8942af52011f1e9c6f347b9c28ed49
Gerrit-PatchSet: 3
Gerrit-Project: apps/android/wikipedia
Gerrit-Branch: master
Gerrit-Owner: Dbrant <[email protected]>
Gerrit-Reviewer: BearND <[email protected]>
Gerrit-Reviewer: Brion VIBBER <[email protected]>
Gerrit-Reviewer: Cscott <[email protected]>
Gerrit-Reviewer: jenkins-bot <>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits