aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/src/cgeo/geocaching/list/StoredList.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/main/src/cgeo/geocaching/list/StoredList.java b/main/src/cgeo/geocaching/list/StoredList.java
index e557fc8..84e1163 100644
--- a/main/src/cgeo/geocaching/list/StoredList.java
+++ b/main/src/cgeo/geocaching/list/StoredList.java
@@ -16,6 +16,7 @@ import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.res.Resources;
+import java.lang.ref.WeakReference;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Collections;
@@ -58,12 +59,12 @@ public final class StoredList extends AbstractList {
}
public static class UserInterface {
- private final Activity activity;
+ private final WeakReference<Activity> activityRef;
private final CgeoApplication app;
private final Resources res;
- public UserInterface(final Activity activity) {
- this.activity = activity;
+ public UserInterface(final @NonNull Activity activity) {
+ this.activityRef = new WeakReference<Activity>(activity);
app = CgeoApplication.getInstance();
res = app.getResources();
}
@@ -104,6 +105,7 @@ public final class StoredList extends AbstractList {
final CharSequence[] items = new CharSequence[listsTitle.size()];
+ final Activity activity = activityRef.get();
AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(res.getString(titleId));
builder.setItems(listsTitle.toArray(items), new DialogInterface.OnClickListener() {
@@ -151,6 +153,10 @@ public final class StoredList extends AbstractList {
@SuppressWarnings("unused")
@Override
public void call(final String listName) {
+ final Activity activity = activityRef.get();
+ if (activity == null) {
+ return;
+ }
final int newId = DataStore.createList(listName);
new StoredList(newId, listName, 0);
@@ -165,6 +171,10 @@ public final class StoredList extends AbstractList {
}
private void handleListNameInput(final String defaultValue, int dialogTitle, int buttonTitle, final Action1<String> runnable) {
+ final Activity activity = activityRef.get();
+ if (activity == null) {
+ return;
+ }
Dialogs.input(activity, dialogTitle, defaultValue, buttonTitle, new Action1<String>() {
@Override