私はImageViewのをタップすると上昇カウンターでアプリを作ってるんです。動作することが、今、私はSharedPreferencesオブジェクトにカウンターを保存したいです。
私は明らかに動作しないのonCreateメソッド、内部のSPオブジェクトを初期化しようとしました。私はグローバルsp.getIntを(...)を使用しようとすると、それはどちらか動作しません。(それが初期化される前に、SPオブジェクトから整数を取得しようとすると)問題がある理由を私は理解しますが、私はそれを解決する方法がわかりません。
public class MainActivity extends AppCompatActivity {
int counterint;
TextView counter;
String stringnumber;
SharedPreferences sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sharedPreferences.getInt("hugcounter", 0);
}
public void hughim(View view){
counter = findViewById(R.id.countertv);
stringnumber = counter.getText().toString();
counterint = Integer.parseInt(stringnumber);
counterint++;
counter.setText(Integer.toString(counterint));
sharedPreferences.edit().putInt("hugcounter", counterint);
}
}
java.lang.RuntimeException:インスタンス化活性ComponentInfo {com.example.hugelon / com.example.hugelon.MainActivity}できません:java.lang.NullPointerExceptionが仮想メソッドを起動しようと「android.content.SharedPreferences android.content.Context。 NULLオブジェクト参照にgetSharedPreferences(java.lang.Stringで、INT)」
java.lang.NullPointerExceptionが:によって引き起こさヌルオブジェクト参照に「(java.lang.Stringで、INT)android.content.SharedPreferences android.content.Context.getSharedPreferences」仮想メソッドを呼び出すしよう
ジョヴァンニの答えは、あなただけのOnCreateで初期値を設定していない、正しいです
public class MainActivity extends AppCompatActivity {
int counterint;
TextView counter;
String stringnumber;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter = findViewById(R.id.countertv);
sharedPreferences = this.getSharedPreferences("com.example.hugelon", Context.MODE_PRIVATE);
stringnumber=String.valueOf(sharedPreferences.getInt("hugcounter", 0));
counter.setText(stringnumber);
}
public void hughim(View view){
counter = findViewById(R.id.countertv);
stringnumber = counter.getText().toString();
counterint = Integer.parseInt(stringnumber);
counterint++;
counter.setText(Integer.toString(counterint));
sharedPreferences.edit().putInt("hugcounter", counterint);
}
}