2013-03-25 3 views
0

내 앱에서 기본 로그인을 구현하려고합니다. 내가하고 싶은 일은 사용자가 로그인 한 경우 "Global"변수를 true/false로 설정하는 것입니다.전역 변수 만들기

나는 this tutorial을 따라갔습니다. 은 그래서 지금 내 코드입니다 :

import android.app.Application; 

public class GlobalParameters extends Application{ 
    private boolean loggedIn; 

    public boolean isLoggedIn() { 
    return loggedIn; 
    } 

    public void setLoggedIn(boolean loggedIn) { 
    this.loggedIn = loggedIn; 
    } 
} 

그리고 이것은에 내 onCreate :

ClassCastException이 나는 '

:

GlobalParameters gp = ((GlobalParameters)getApplicationContext()); 
gp.setLoggedIn(false); 

그러나 GlobalParameters gp = ...이 예외를 throw 나는 이것을 m에 추가했다. y 명시 :

<application android:name=".GlobalParameters" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name"> 
</application> 

어떤 아이디어가 있습니까?

감사합니다.

+1

차라리 로그인 토큰을 저장하는 공유의 환경 설정을 사용할 수 있습니다. –

답변

1

this.getApplication()을 사용하면 Activity과 연결된 Application이 표시됩니다. 그러나 나는 당신의 경우에 Application에가는 것이 약간 잔인하다고 생각합니다. 당신은 단지 클래스에서 정적 필드를 사용할 수 있습니다. 당신이 당신의 Activity이 다음 당신이 그와 함께 시작하는 SharedPreferences, 좋은 가이드를 사용할 수 있습니다 폐기 될 때 상태가 유지하려는 경우 변수가 로그인과 로그 아웃 단지의 경우

그러나, https://developer.android.com/guide/topics/data/data-storage.html#pref

+0

Android에서 정적 필드는 활동이 삭제 될 때 상태를 유지하지 않습니다. 이것이 애플리케이션의 (못생긴) 솔루션의 요점입니다. –

0

여기에있다 정적 변수를 사용하고 로그인시 true로 설정하고 로그 아웃시 false로 설정하는 것이 좋습니다.

public static boolean loggedIn; 

아래와 같이 사용 :

myApplication.loggedIn = true; 

myApplication.loggedIn = false;