“android.app.Application을 전송할 수 없습니다”로 사용자 정의 전역 응용 프로그램 클래스가 중단됨


141

다음과 같은 사용자 정의 글로벌 클래스가 있습니다.

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

코드를 다섯 번 확인했는데 어디서나 오류를 찾을 수 없습니다. 누구든지 오류가 어디 있는지 말해 줄 수 있습니까?!

감사

답변:


470

이 오류는에 의해 반환 된 객체의 유형 getApplicationandroid.app.Application입니다. 가능한 원인은 매니페스트에서 응용 프로그램을 정의하지 못했기 때문입니다. 매니페스트에 다음과 같은 내용이 포함되어 있는지 확인하십시오.

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

8
세상에, 당신 말이 맞아요 그리고 지난 시간에 100 번 일했을 때 왜 작동하지 않는지 알아 내려고 지난 시간을 잃었습니다. :). 고마워요!
sandalone

8
2 년이 지났지 만 여전히 생명을
구합니다

30
야. 나는 이것을 매니페스트에 추가했다. 그러나, 여전히 나에게 ClassCastException를주고있다
소무

13
몇 분 전에 Android N에서 동일한 문제가 있었지만 매니페스트가 정확했습니다. 장치를 다시 시작했습니다. 예외가 발생했습니다. 이상한 ...
artkoenig

3
@Somu 캐시를 캐시하고 즉시 실행을 닫고 프로젝트를 다시 빌드하십시오. 이것은 나를 위해 말한 것입니다. 이것은 인스턴트 실행의 버그라고 생각합니다.
LenaYan

11

구형 Android 기기 또는 에뮬레이터를 위한 또 다른 솔루션입니다 . 매니페스트에서 응용 프로그램을 정의했습니다.

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

하지만 여전히이 문제가 있습니까?

즉시 실행을 비활성화하십시오.

  1. 즉시 실행 비활성화
  2. 프로젝트 정리 및 재 구축
  3. 기기에서 앱을 제거한 후 즉시 실행하지 않고 다시 설치
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.