Estoy haciendo una aplicación con un contador que se eleva cuando toco una ImageView. Que las obras, pero ahora quiero salvar el contador a un objeto SharedPreferences.
He tratado de inicializar el objeto de SP dentro del método onCreate, lo que obviamente no funciona. Cuando trato de utilizar sp.getInt (...) a nivel mundial, que no funciona bien. Entiendo por qué hay un problema (Tratando de conseguir un número entero de un objeto sp antes de que se inicializa), pero no sé cómo resolverlo.
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: Incapaz de actividad instantiate ComponentInfo {com.example.hugelon / com.example.hugelon.MainActivity}: java.lang.NullPointerException: intento de invocar método virtual 'android.content.SharedPreferences android.content.Context. getSharedPreferences (java.lang.String, int)' en una referencia de objeto nulo
Causado por: java.lang.NullPointerException: intento de invocar virtuales método 'android.content.SharedPreferences android.content.Context.getSharedPreferences (java.lang.String, int)' en una referencia de objeto nulo
La respuesta de Juan es correcta, simplemente no se está configurando el valor inicial en alcrear
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);
}
}