2017-05-08 3 views
-1

Je tente de sauvegarder la valeur d'un int affiché dans un TextView en utilisant SharedPreferences, cela ne peut pas fonctionner du tout. J'ai fait un simple petit exemple de code:SharedPreferences Enregistrer la valeur de Int dans un TextView

public class MainActivity extends Activity { 

Button search; 
TextView tvRing; 
int redRing; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final SharedPreferences prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 

    search = (Button) findViewById(R.id.radar); 
    tvRing = (TextView) findViewById(R.id.ring); 

    int someint = prefs.getInt("someint", 0); 
    tvRing.setText("Objects found : " + String.valueOf(someint)); 

    search.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      addRing(); 
      SharedPreferences.Editor editor = prefs.edit(); 
      editor.putInt("someint", redRing); 
      editor.commit(); 
     } 
    }); 
} 

public void addRing() { 
    redRing++; 
} 
} 

Merci à tous pour votre aide.

+0

Votre code semble bien, qu'est-ce que vous voulez dire par "ne peux pas travailler du tout"? –

+0

Je veux sauver la valeur de TextView parce que l'int augmente quand l'utilisateur clique sur le bouton mais si je quitte l'application et reviens, la valeur de TextView revient à la valeur par défaut de 0. Ne peut pas travailler du tout pour enregistrer les données que je veux dire –

+0

Où utilisez-vous someint? –

Répondre

1

Je lui ai expliqué où je fait des changements

public class MainActivity extends Activity { 

    Button search; 
    TextView tvRing; 

    //Making sharedpreferences and integers global for ease of use 
    private SharedPreferences prefs; 
    private int redRing, someint; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     search = (Button) findViewById(R.id.radar); 
     tvRing = (TextView) findViewById(R.id.ring); 

     //Someint default value is 0 if not ever saved before 
     prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 
     someint = prefs.getInt("someint", 0); 
     tvRing.setText("Objects found : " + String.valueOf(someint)); 

     search.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //Load the lates someint in onclick 
       someint = prefs.getInt("someint", 0); 

       //redring is the dummy integer to increment someint 
       redRing=someint+1; 
       //Save the incremented value 
       SharedPreferences.Editor editor = prefs.edit(); 
       editor.putInt("someint", redRing); 
       editor.commit(); 

       //To show the latest number on the tv 
       lastNumber(); 
      } 
     }); 
    } 


    public void lastNumber() { 
     prefs = getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE); 
     someint = prefs.getInt("someint", 0); 
     tvRing.setText("Objects found : " + String.valueOf(someint)); 
    } 
} 
+0

Je l'ai essayé, il y a la sauvegarde de la valeur, mais le problème est que si je quitte l'application et cliquez à nouveau sur le bouton de recherche, le TextView recommence à 0 mais avant je clique sur le dernier numéro –

+0

Check this out. –

+0

J'ai supprimé l'appel redundant final sharedpreferences dans la méthode lastNumber. Pardon. –

1

Vous devez utiliser

SharedPreferences.Editor editor = prefs.edit(); 
     editor.putInt("someint", redRing); 
     editor.apply(); 

et vous n'utilisez "SomeInt", utilisez

tvRing.setText(String.valueOf(someint)); 
+0

J'ai essayé mais je ne peux pas toujours travailler –

+0

Vous n'utilisez jamais "someint" –

+0

Mais maintenant j'ai une erreur, le crash de l'application –