2013-03-25 150 views
0

我試圖在我的應用中實現基本登錄。我想要做的是設置一個「全局」變量,如果用戶已登錄,則爲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

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

GlobalParameters gp = ...拋出此異常:

ClassCastException異常

我我也在m中加了這個y清單:

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

任何想法?

謝謝。

+1

我寧願使用共享首選項,用於存儲所述登錄標記。 – 2013-03-25 22:30:06

回答

1

使用this.getApplication()可獲得與您的Activity相關的Application。但我認爲你的情況,去Application是有點矯枉過正。你可以在類中使用靜態字段。

但是,如果您要在Activity被丟棄,那麼你可以使用SharedPreferences,一個很好的指導開始使用這些被保留的狀態是在這裏https://developer.android.com/guide/topics/data/data-storage.html#pref

+0

當活動被丟棄時,Android中的靜態字段不保留狀態。這就是應用程序的(醜陋的)解決方案的全部要點。 – 2013-03-25 22:46:03

0

如果你的變量只是登錄和註銷,最好使用靜態變量,並在登錄時將其設置爲true,並在註銷時將其設置爲false。

public static boolean loggedIn; 

並如下使用它:

myApplication.loggedIn = true; 

myApplication.loggedIn = false;