0

私はしばらくの間このコードを見つめていましたが、どこが間違っているのかわかりません。最初に実行するアプリケーションでのみ実行されるオーバーレイアクティビティを実装しようとしています。

nullpointerExceptionが発生します。

どんな助けでも大歓迎です。

私の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;
}
4

1 に答える 1

2

このような設定を取得してみてください

 preferences =getSharedPreferences("yourpreferencename", 0);

あなたのPreferenceManager.getDefaultSharedPreferences(this);返品 null

于 2013-02-26T18:28:56.123 に答える