2013-03-25 153 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;