gpt4 book ai didi

java - 在应用程序类错误中保存数据

转载 作者:搜寻专家 更新时间:2023-11-01 08:09:05 25 4
gpt4 key购买 nike

我试图将我的自定义对象列表放入应用程序类中,以便在多个 Activity 中访问我的数据。但是有些东西不起作用,我不知道出了什么问题。

这就是我正在做的:

AssetManager assetManager = getAssets();
InputStream inputStream = null;
try {
inputStream = assetManager.open("myJsonFile.json");
} catch (IOException e) {
Log.e("tag", e.getMessage());
}
ObjectMapper objectMapper = new ObjectMapper();
try {

List<JJsonResponse> jsonResponse = objectMapper.readValue(inputStream, new TypeReference<List<JJsonResponse>>() { });
Log.i("tijdlog","einde parsing" );
final List<JJsonResponse> myGlobalVariable = jsonResponse;
((ApplicationController)getApplication()).setGlobalVariable(myGlobalVariable);

其中 JJsonResponse 是一些自定义对象。没有最后一部分,一切都很好。

我的 ApplicationController 类:

    public class ApplicationController extends Application {

private List<JJsonResponse> venueController;

public List<JJsonResponse> getGlobalVariable() {
return venueController;
}

public void setGlobalVariable(List<JJsonResponse> globalVariable) {
this.venueController = globalVariable;
}

@Override
public void onCreate() {

}
}

运行程序时崩溃。错误日志:

07-20 14:06:09.487: W/dalvikvm(6668): threadid=1: thread exiting with uncaught exception (group=0x400259f8)
07-20 14:06:09.497: E/AndroidRuntime(6668): FATAL EXCEPTION: main
07-20 14:06:09.497: E/AndroidRuntime(6668): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.jacksonrecipes.testapp/com.jacksonrecipes.testapp.Main}: java.lang.ClassCastException: android.app.Application
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2787)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2803)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread.access$2300(ActivityThread.java:135)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2136)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.os.Handler.dispatchMessage(Handler.java:99)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.os.Looper.loop(Looper.java:144)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread.main(ActivityThread.java:4937)
07-20 14:06:09.497: E/AndroidRuntime(6668): at java.lang.reflect.Method.invokeNative(Native Method)
07-20 14:06:09.497: E/AndroidRuntime(6668): at java.lang.reflect.Method.invoke(Method.java:521)
07-20 14:06:09.497: E/AndroidRuntime(6668): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-20 14:06:09.497: E/AndroidRuntime(6668): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-20 14:06:09.497: E/AndroidRuntime(6668): at dalvik.system.NativeStart.main(Native Method)
07-20 14:06:09.497: E/AndroidRuntime(6668): Caused by: java.lang.ClassCastException: android.app.Application
07-20 14:06:09.497: E/AndroidRuntime(6668): at com.jacksonrecipes.testapp.Main.onCreate(Main.java:52)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1069)
07-20 14:06:09.497: E/AndroidRuntime(6668): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)

我将变量设置为 final 因为我认为它可能与此有关,但那没有用。有谁知道未捕获的异常可能是什么以及如何解决我的问题?

编辑:忘记显示我的 list ,我不知道那是否正确所以我添加了它:

   <application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<application
android:label="@string/app_name"
android:name=".ApplicationController"
/>

最佳答案

您应该在您的 Android 项目的 Manifest.xml 中将应用程序的名称定义为 ApplicationController,如下所示:

<application
android:name=".ApplicationController"
......

编辑 您在 list 中提供了两个应用程序。从这里更改您的 list :

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<application
android:label="@string/app_name"
android:name=".ApplicationController"
/>

为此:

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name=".ApplicationController" >
<activity
android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

我想你会没事的

关于java - 在应用程序类错误中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11579320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com