마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

전역변수를 불러올 수가 없어요 도와주세요

0 추천
package sulivan_k.suilvan;

import android.app.Application;

public class MyApplication extends Application{
    public static boolean nowmod = false;

    @Override
    public void onCreate() {
        //전역 변수 초기화
        super.onCreate();
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
    }

    public void setState(Boolean state){
        this.nowmod = state;
    }

    public Boolean getState(){
        return nowmod;
    }
}
위에가 Application을 상속받은거구요
<application
    android:name="MyApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity android:name=".MainActivity" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".CustomerPage">
    </activity>
    <activity android:name=".Menu">
    </activity>
    <activity android:name=".SearchShop">
    </activity>
    <activity android:name=".Shops">
    </activity>
</application>
이렇게 android:name에도 명시했구요
boolean typmod = ((MyApplication) this.getApplication()).getState();
결국 이렇게 쓰려고 하니까 에러가 뜨네요
11-17 14:00:53.522 24034-24034/sulivan_k.suilvan E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
11-17 14:00:53.522 24034-24034/sulivan_k.suilvan E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Boolean sulivan_k.suilvan.MyApplication.getState()' on a null object reference
11-17 14:00:53.522 24034-24034/sulivan_k.suilvan E/AndroidRuntime:     at sulivan_k.suilvan.MainActivity.<init>(MainActivity.java:29)

NULL값이라고 하는거 같은데, 어떻게 해결할수 있을까요
익명사용자 님이 2015년 11월 17일 질문
제 생각엔 안드로이드&&JAVA 기초 서적 한번 읽고 오시는게 좋을듯 합니다.
무슨 소리인지 모르겠습니다 거기다가 애러 로그는 보이지도 않습니다.

3개의 답변

0 추천
왜 매니페스트에다가 명시를하죵;;?
줴훈줴훈 (290 포인트) 님이 2015년 11월 17일 답변
하아, 답변해주신건 고마운데.
인터넷에 전역변수 관련글 모두 에서 저렇게 선언을 했습니다.
그 모든 분들은 왜 저기에 명시를 하셨을까요?
0 추천

메니페스트에서 application 클래스 경로를 FULL 로 입력해보세요.

메니페스트에서 해당 Application 클래스 경로를 잘못찾아서 발생하는 이슈같습니다.

 

<application
    android:name="MyApplication"   <<< 이부분 패키지까지 다적어야함
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
라쎄린드 (25,460 포인트) 님이 2015년 11월 17일 답변
0 추천
위의 코드상으로는 문제는 없어 보입니다.

저기서 this 라는 부분이 정확히 activity를 가르키는건지 확인을 해보심이 좋을듯 합니다.

 

정 안되시면 MyApplication 의 함수를 static 으로 만드셔서 직접 호출하시는 방향도 괜찮습니다.

실제로 static으로 많이들 사용도 하시구요
바램 (19,650 포인트) 님이 2015년 11월 17일 답변
...