2016-02-28 65 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