2013-06-19 17 views
2

我從活動A移動到活動B intent.I存儲在共享首選項中的一些值在活動A oncreate()我提取的共享偏好的值進行比較有一些條件,但它給我空指針異常如預期的(因爲我不去活動B)。但是我想寫一個條件來獲取共享偏好的數據,如果值不爲null.Can某人請說如何我可以做到這一點嗎?以下是我的代碼:在android空指針異常的共享偏好

In Activity B: 
       SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(MerchantLogin.this); 
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putString("showdialog_login", "dontshow"); 
       editor.commit(); 
In Activity A: 
      @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 

     SharedPreferences prefs =null; 
prefs = PreferenceManager.getDefaultSharedPreferences(LoginScreen.this); 
SharedPreferences.Editor editor = prefs.edit(); 


if ((prefs.getString("showdialog_login", null).equalsIgnoreCase("dontshow"))) 
{ 

} 
else if((prefs.getString("showdialog_login", null).equalsIgnoreCase("true"))) 
{ 

} 
else if((prefs.getString("showdialog_login", null).equalsIgnoreCase("dummy"))) 
{ 

} 
else 
{ 
    editor.putString("showdialog_login", "false"); 
    editor.commit(); 
} 

    } 

但是我在這一行出現錯誤:比較使用equals

if ((prefs.getString("showdialog_login", null).equalsIgnoreCase("dontshow"))).How can i execute this block of code. 

回答

0

你應該總是使用常量作爲第一個參數,即

"dontshow".equalsIgnoreCase(prefs.getString("showdialog_login", null)) 

您正在獲取NullPointerException,因爲showdialog_login屬性尚未設置,即

prefs.getString("showdialog_login", null) 

返回null,因爲這就是您設置的默認值。

實際上,你的病情因而

null.equalsIgnoreCase("dontshow") 

NullPointerException哪位自然結束。

+0

感謝佐爾坦ü救了我大量的時間。 – Joyson

2

相反的:

prefs.getString("showdialog_login", null) 

用途:

prefs.getString("showdialog_login", "") 

因爲,如果 「showdialog_login」 偏愛值未設置,它將返回空值,你可能會得到NPE(空指針異常)。

0

在活動答:

static SharedPreferences prefs; 
@Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 

     prefs = getSharedPreferences("showdialog_login",0); 
     String ss= prefs.getString("showdialog_login", "default"); 
if ((ss.equalsIgnoreCase("dontshow"))) 
{ 

} 
else if((ss.equalsIgnoreCase("true"))) 
{ 

} 
else if((ss.equalsIgnoreCase("dummy"))) 
{ 

} 
else 
{ 
    editor.putString("showdialog_login", "false"); 
    editor.commit(); 
} 

    }