0

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

我得到一个空指针异常。

任何帮助将不胜感激。

我的 onCreate():

公共类 MainActivity 扩展 Activity { SharedPreferences 首选项;查看顶层布局;

@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;
}
4

1 回答 1

2

尝试获取这样的偏好

 preferences =getSharedPreferences("yourpreferencename", 0);

你的PreferenceManager.getDefaultSharedPreferences(this);回报为空

于 2013-02-26T18:28:56.123 回答