2012-12-27 57 views
2

在我的登錄和註銷功能的應用程序中,我正在檢查活動啓動時共享首選項是否爲空,但我仍然收到NullPointerException。如何在android中檢查共享偏好是否爲null?

這裏是我的HomeActivity.java代碼:

// Username And Password Editbox 
String eusername; 
String epassword; 

// Shared Preferences String declaration 
String spusername; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  

    SharedPreferences spreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
    spusername=spreferences.getString("spusername",""); 

    if(!spusername.equals("")) 
    { 
     Log.e("Spusername not null","-->"+spusername); 
    } 
    if(spusername==null) 
    { 
     Log.e("Spusername null","-->"+spusername); 
    } 
} 
+0

您可以請分享您的例外日誌詳細信息 – swiftBoy

+0

哪個語句拋出空指針異常? –

+0

*檢查共享首選項是否爲null *是否指變量'spreferences'爲空? – t0mm13b

回答

1

你給eusername不初始化這個變量,從而讓空指針異常 因此,嘗試這樣

spusername = preferences.getString("spusername", "n/a"); 

if(spusername!= null && !spusername.equals("")) 
    { 
     Log.e("Spusername != null","-->"+spusername); 

    } 
    else{ 
       // your code is here 
    } 
+0

} if if null } condition – Mahesh

+0

ya。讓我澄清是否有pref_string在spusername –

+0

不,這是否是當活動開始時,如果首選項爲空比顯示我的用戶名和passwordword編輯框其他明智是顯示註銷按鈕爲登錄活動 – Mahesh

1

嘗試爲:

spusername=spreferences.getString("spusername", ""); 

爲spusername i添加默認值f在SharedPreferences中找不到密鑰,現在將其檢查爲emplty或null:

spusername=spreferences.getString("spusername", ""); 

if(!spusername.equals("")){ 
    Log.e("Spusername != null","-->"+spusername); 
}else{ 
     // do some code here 
} 
1

僅僅因爲您沒有初始化默認值。

String eusername; 

這將始終爲空,直到您沒有將任何值保存到共享首選項中。 與空字符串只是初始化

String eusername = ""; 
2

的方法 「spreferences.getString(」 spusername 「eusername);」以空的eusername返回默認值。因此它給出空指針異常。

取而代之的是eusername,您可以通過給出如下的字符串值來嘗試。

spreferences.getString(「spusername」,「」);

9

您在SharedPreferences上有contains方法。

boolean isSpUsernameDefined = spreferences.contains("spusername"); 
+1

球!我需要咖啡......對不起!已經恢復了我的低調 - 在這裏根本沒有想到! mea culpa ...使用'contains'關鍵字來檢查實際密鑰是否存在的好主意...... – t0mm13b

+0

完成先生!感覺喝咖啡後振奮精神! :) – t0mm13b