2013-03-25 5 views
0

Я пытаюсь реализовать базовый логин в своем приложении. То, что я хочу сделать, это установить «Глобальную» переменную как истину/ложь, если пользователь вошел в систему.Создание глобальной переменной

Я следовал 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:

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

Но GlobalParameters gp = ... бросает это исключение:

ClassCastException

Я ve добавил это тоже в м y:

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

Есть идеи?

Спасибо.

+1

Я предпочел бы использовать общие преф для хранения маркеров входа в системе. –

ответ

1

Используйте this.getApplication(), чтобы получить Application, связанный с вашим Activity. Но я думаю, что в вашем случае переезд в 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; 
Смежные вопросы