2

カスタムオブジェクトのリストをアプリケーションクラスに入れて、複数のアクティビティでデータにアクセスしようとしています。しかし、何かがうまくいかず、何が悪いのかわかりません。

これは私がしていることです:

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)

私はそれがそれと関係があるかもしれないと思った変数の最終的な原因を作りました、しかしそれはうまくいきませんでした。キャッチされない例外が何であるか、そして私の問題を解決する方法を誰かが知っていますか?

編集:マニフェストを表示するのを忘れました。それが正しいかどうかわからないので、追加しました。

   <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" 
    />
4

1 に答える 1

4

Androidプロジェクトのアプリケーションの名前を次のように定義する必要がありManifest.xmlますApplicationController

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

編集マニフェストに2つのアプリケーションを指定しました。これからマニフェストを変更します。

<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>

そして、私はあなたが大丈夫だと思います

于 2012-07-20T12:27:14.067 に答える