preferences.getBoolean导致崩溃

时间:2013-02-26 18:21:53

标签: android sharedpreferences

我已经盯着这段代码了一段时间,我不知道我哪里出错了。我正在尝试实现一个覆盖活动,该活动仅在首次运行的应用程序上运行。

我得到一个nullpointer Exception。

非常感谢任何帮助。

我的onCreate():

公共类MainActivity扩展Activity {     SharedPreferences首选项;     查看topLevelLayout;

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

    topLevelLayout= findViewById(R.layout.activity_instructions);
    preferences = PreferenceManager.getDefaultSharedPreferences(this);

    if (isFirstTime()) {
        topLevelLayout.setVisibility(View.INVISIBLE);
    }

isFirstTime方法:

private boolean isFirstTime()
{
    boolean ranBefore = preferences.getBoolean("RanBefore", false); // The program crashes here
    if (!ranBefore) {
        SharedPreferences.Editor editor = preferences.edit();
        editor.putBoolean("RanBefore", true);
        editor.commit();
        topLevelLayout.setVisibility(View.VISIBLE);
        topLevelLayout.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            topLevelLayout.setVisibility(View.INVISIBLE);
            return false;
            }
        });
    }
    return ranBefore;
}

1 个答案:

答案 0 :(得分:2)

尝试获取此类偏好

 preferences =getSharedPreferences("yourpreferencename", 0);

您的PreferenceManager.getDefaultSharedPreferences(this);返回null