149

このようなカスタムグローバルクラスがあります

import android.app.Application;

public class MyApp extends Application {

    public String MainAct;

    public String getMainAct() {
        return MainAct;
    }

    public void setMainAct(String mainAct) {
        MainAct = mainAct;
    }
}

Activityメソッド内の別の文字列を介して、このクラスの文字列を保持したいonCreate

    String local = "myLocalVariable";
    ((MyApp) getApplication()).setMainAct(local); //breaks here!!!
    String name = ((MyApp) getApplication()).getMainAct();

マークされた行でエラーが発生します。Caused by: java.lang.ClassCastException: android.app.Application cannot be cast to com.xxx.yyy.global.MyApp

コードを 5 回チェックしましたが、どこにもエラーが見つかりません。エラーの場所を教えてもらえますか?!

ありがとう

4

2 に答える 2

513

getApplicationエラーは、によって返されるオブジェクトのタイプが であると述べていますandroid.app.Application。これの考えられる原因は、マニフェストでアプリケーションを定義できなかったことです。マニフェストに次の行に何かが含まれていることを確認してください。

<application android:name=".MyApp"...
</application>
于 2012-05-15T19:21:53.853 に答える
17

古い Android デバイスまたはエミュレータ用の別のソリューション。マニフェストでアプリケーションを定義しました。

    <application 
           android:name=".MyApp"...
    </application>

しかし、あなたはまだこの問題を抱えていますか?

インスタントランを無効にしてみてください:

  1. インスタント実行を無効にする
  2. プロジェクトをクリーンアップして再構築する
  3. デバイスからアプリを削除し、Instant run なしで再度インストールします
于 2016-10-30T17:51:14.123 に答える