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