2016-02-28 51 views
0

嘗試檢查共享首選項是否存在。我需要的是允許用戶如果他們以前在這裏訪問過網頁(即共享首選項存在並且不等於「」),或者將它們放在歡迎頁面上(如果這是他們第一次在應用程序中)由於用戶未輸入任何數據,所以共享首選項爲空)。檢查是否存在共享首選項

public class PersonalDetails extends Activity { 
     private SharedPreferences sharedPreferences; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_personal_details); 


if (sharedPreferences.contains("")) { 
      Intent intent = new Intent(PersonalDetails.this, Welcome.class); 
      startActivity(intent); 
     } 
+0

如果您遇到任何錯誤,您必須形成實際問題或添加堆棧跟蹤。順便說一句,在未初始化的SharedPreferences對象上調用'contains()'方法應該引發NullPointerException – xAF

+0

任何想法我可以怎麼做呢? – Coco12

回答

0

嘗試

public class PersonalDetails extends Activity { 
    private SharedPreferences sharedPreferences; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_personal_details); 


     if (isFirstTime()){ 
     Intent intent = new Intent(PersonalDetails.this,Welcome.class); 
     startActivity(intent); 
     } 
     } 



private boolean isFirstTime() { 
    SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
    boolean ranBefore = preferences.getBoolean("RanBefore", false); 
    if (!ranBefore) { 
     // first time 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean("RanBefore", true); 
     editor.commit(); 
    } 
    return !ranBefore; 
} 
+0

感謝此代碼的工作原理,但不幸解決了我的解決方案。不幸的是,該應用第一次運行時崩潰(我認爲是因爲它沒有共享偏好),但第二次只是將用戶帶到個人詳細信息頁面(因爲已創建共享偏好) – Coco12

+0

有沒有辦法檢查如果某個共享首選項值是空白的? – Coco12

+0

@ Coco12,使用'sharedPreferences.getBoolean'(或'.getString'或'.get ...'接受兩個參數,第一個是您正在查找的值的Key,第二個是默認返回值 – CaptJak

0

我覺得需要的getPreferences兩個輸入如下。

public abstract SharedPreferences getSharedPreferences(String name, 
     int mode); 
// Example 
getSharedPreferences("your_app_name", MODE_PRIVATE); 
+0

好酷,那麼我將如何將這個到我的解決方案? – Coco12

+0

只需輸入一個字符串(「your_app_name」)到你的老getSharedPreferences函數中,如上面我的評論所示。 –

+0

噢,對不起,沒有在你的代碼中看到它,這是否進入onCreate或方法? – Coco12