aboutsummaryrefslogtreecommitdiffstats
path: root/main
diff options
context:
space:
mode:
authorMichael Keppler <bananeweizen@gmx.de>2013-12-25 17:57:22 +0100
committerMichael Keppler <bananeweizen@gmx.de>2013-12-25 17:57:22 +0100
commit2ddd0beeda29600a25f858fd16598632745f3144 (patch)
treef5eeec464e84fa5a116849f7213386a8a8be7c69 /main
parentcb8ad6938501771dea3eff85ffe8474e3881b0e8 (diff)
downloadcgeo-2ddd0beeda29600a25f858fd16598632745f3144.zip
cgeo-2ddd0beeda29600a25f858fd16598632745f3144.tar.gz
cgeo-2ddd0beeda29600a25f858fd16598632745f3144.tar.bz2
fix #3477: NPE in view state management
Diffstat (limited to 'main')
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java9
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractCachingListViewPageViewCreator.java4
-rw-r--r--main/src/cgeo/geocaching/ui/AbstractCachingPageViewCreator.java4
3 files changed, 13 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
index 24c0a1b..049fc7d 100644
--- a/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
+++ b/main/src/cgeo/geocaching/activity/AbstractViewPagerActivity.java
@@ -8,6 +8,7 @@ import com.viewpagerindicator.TitleProvider;
import org.apache.commons.lang3.tuple.Pair;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.app.Activity;
import android.os.Bundle;
@@ -86,7 +87,8 @@ public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends
/**
* Gets state of the view
*/
- public Bundle getViewState();
+ public @Nullable
+ Bundle getViewState();
/**
* Set the state of the view
@@ -115,8 +117,11 @@ public abstract class AbstractViewPagerActivity<Page extends Enum<Page>> extends
// Store the state of the view if the page supports it
PageViewCreator creator = viewCreators.get(page);
if (creator != null) {
+ @Nullable
Bundle state = creator.getViewState();
- viewStates.put(page, state);
+ if (state != null) {
+ viewStates.put(page, state);
+ }
}
container.removeView((View) object);
diff --git a/main/src/cgeo/geocaching/ui/AbstractCachingListViewPageViewCreator.java b/main/src/cgeo/geocaching/ui/AbstractCachingListViewPageViewCreator.java
index 11a37aa..799b695 100644
--- a/main/src/cgeo/geocaching/ui/AbstractCachingListViewPageViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/AbstractCachingListViewPageViewCreator.java
@@ -3,6 +3,7 @@ package cgeo.geocaching.ui;
import cgeo.geocaching.activity.AbstractViewPagerActivity.PageViewCreator;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
@@ -24,7 +25,8 @@ public abstract class AbstractCachingListViewPageViewCreator extends AbstractCac
* @return the state encapsulated in a bundle
*/
@Override
- public Bundle getViewState() {
+ public @Nullable
+ Bundle getViewState() {
if (view == null) {
return null;
}
diff --git a/main/src/cgeo/geocaching/ui/AbstractCachingPageViewCreator.java b/main/src/cgeo/geocaching/ui/AbstractCachingPageViewCreator.java
index 9d87f2b..ed5d182 100644
--- a/main/src/cgeo/geocaching/ui/AbstractCachingPageViewCreator.java
+++ b/main/src/cgeo/geocaching/ui/AbstractCachingPageViewCreator.java
@@ -5,6 +5,7 @@ import cgeo.geocaching.activity.AbstractViewPagerActivity.PageViewCreator;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
import android.os.Bundle;
import android.view.View;
@@ -42,7 +43,8 @@ public abstract class AbstractCachingPageViewCreator<ViewClass extends View> imp
* @return empty bundle
*/
@Override
- public Bundle getViewState() {
+ public @Nullable
+ Bundle getViewState() {
return new Bundle();
}