Problema con SharedPreferences - cómo utilizar?

Turwath:

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

Lakhwinder Singh:

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);

            }

        }

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=315617&siteId=1
Recomendado
Clasificación