【发布时间】:2014-01-30 01:23:15
【问题描述】:
对不起,我的英语不好。 在我的应用程序中,我使用来自 Guava 库的 ImmutableMap 来存储一些键和值。 当我按下主页按钮然后重新打开应用程序时它崩溃并且 logcat 说地图中有重复的值。 那是因为我在 MainActivity 开始时填充了地图。 是否有可能以某种方式找出 MainActivity 是否已经存在而不填充它?
一个解决方案:我看到的唯一解决方法是检查地图的大小,如果它为空,则填充它。
编辑:出现重复值,因为地图在第一次启动时已填充,然后在活动重新启动后,它会尝试再次填充它们,从而导致错误。
代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main);
Map.map_fill();
....
}
LogCat:
01-11 01:56:31.970: D/AndroidRuntime(30500): Shutting down VM
01-11 01:56:31.970: W/dalvikvm(30500): threadid=1: thread exiting with uncaught exception (group=0x41864ba8)
E/AndroidRuntime(30500): FATAL EXCEPTION: main
E/AndroidRuntime(30500): Process: ru.mastergroosha.idneval2, PID: 30500
E/AndroidRuntime(30500): java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.mastergroosha.idneval2/ru.mastergroosha.idneval2.MainActivity}: java.lang.IllegalArgumentException: Multiple entries with same key: 01=Веригин Вадим Сергеевич and 01=Веригин Вадим Сергеевич
E/AndroidRuntime(30500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2198)
E/AndroidRuntime(30500): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248)
E/AndroidRuntime(30500): at android.app.ActivityThread.access$800(ActivityThread.java:138)
E/AndroidRuntime(30500): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199)
E/AndroidRuntime(30500): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(30500): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime(30500): at android.app.ActivityThread.main(ActivityThread.java:5050)
E/AndroidRuntime(30500): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(30500): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(30500): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime(30500): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime(30500): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(30500): Caused by: java.lang.IllegalArgumentException: Multiple entries with same key: 01=Веригин Вадим Сергеевич and 01=Веригин Вадим Сергеевич
E/AndroidRuntime(30500): at com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:150)
E/AndroidRuntime(30500): at com.google.common.collect.RegularImmutableBiMap.<init>(RegularImmutableBiMap.java:77)
E/AndroidRuntime(30500): at com.google.common.collect.ImmutableBiMap$Builder.build(ImmutableBiMap.java:172)
E/AndroidRuntime(30500): at ru.mastergroosha.idneval2.Map.make_names_array(Map.java:77)
E/AndroidRuntime(30500): at ru.mastergroosha.idneval2.MainActivity.onCreate(MainActivity.java:114)
E/AndroidRuntime(30500): at android.app.Activity.performCreate(Activity.java:5241)
E/AndroidRuntime(30500): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime(30500): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2162)
E/AndroidRuntime(30500): ... 11 more
【问题讨论】:
-
你能发布你的logcat吗
-
你是否同时实现了 onStart 和 onResume?
-
不,我没有,应该吗?
-
发布您的主要活动
-
好的,我已经编辑了帖子
标签: android map android-activity lifecycle