2017-07-12 3 views
0

Je dois juste transférer le chemin du fichier de sauvegarde d'une activité vers une autre activité mais quand il s'agit d'afficher les données, il affiche une valeur nulle.Peut-on partager ou transférer des données d'une activité vers une autre en utilisant SharedPreference?

Voici le code pour stocker des données dans SharedPreference: -

SharedPreferences pref= getApplicationContext().getSharedPreferences("Recorder",0); 
    SharedPreferences.Editor editor = pref.edit(); 
    editor.putString("file_name",DateFormat.format("yyyy-MM-dd_kk-mm-ss", new Date().getTime())+".mp4"); 
    editor.putString("file_path",Environment.getExternalStorageDirectory()+"/"+DateFormat.format("yyyy-MM-dd_kk-mm-ss", new Date().getTime())+".mp4"); 

de données dans sharedPreference: -

file_name = (TextView) findViewById(R.id.file_name); 
    file_path = (TextView) findViewById(R.id.file_path); 
    pref = getApplicationContext().getSharedPreferences("Recorder",0); 
    editor = pref.edit(); 
    String fileName = pref.getString("file_name",null); 
    String filePath = pref.getString("file_path",null); 

    if(fileName != null){ 
      file_name.setText(fileName); 
    }else{ 
     file_name.append(""); 
    } 

    if (filePath != null){ 
     file_path.setText(filePath); 
    }else{ 
     file_path.append(""); 
    } 
+1

ajouter editor.apply(); après avoir mis les valeurs à la préférence – darwin

+0

Oui vous pouvez, 'éditeur.apply() 'est ce qui vous manque; bien qu'une meilleure façon de le faire est d'utiliser 'intent.putStringExtra()' –

+0

Aussi, vous pouvez écrire 'editor.commit();' après avoir stroing les valeurs à sharepreference –

Répondre

2

Vous devez appliquer l'éditeur par

editor.commit():

ou

editor.apply();

+0

Cela fonctionne pour moi merci ami @ Mohad12211 –

1

editor.apply() est manquante. Vous ne commettez pas la sauvegarde.

1

Pourquoi avez-vous besoin de surcharger le système? vous avez un mécanisme pour transmettre des données entre les activités, il suffit d'envoyer le chemin du fichier dans l'intention.

En ActivityA:

Intent intent = new Intent(ActivityA.this, ActivityB.class); 
intent.putExtra("filePath", "..."); 
startActivity(intent); 

En ActivityB:

String filePath = getIntent().getExtras().getString("filePath"); 
+0

En fait, la question poser pour le transfert de données en utilisant la préférence et non par l'intention supplémentaire – darwin

+0

oui, mais si vous voulez le faire dans le bon sens, c'est recommandé par tous les moyens ... – Dus

0

Ouais vous pouvez utiliser SharedPreference pour magasin les informations.

Pour transmettre les données d'une activité à une autre, il vaut mieux utiliser l'intention.

Intent intent = new Intent(CurrentActivity.this, AnotherActivity.class); 
    intent.putExtra("file_name","name"); 
    intent.putExtra("file_path","path"); 
    startActivity(intent) 

Dans une autre activité,

String fileName = getIntent().getStringExtra("file_name"); 
String filePath = getIntent().getStringExtra("file_path"); 
0

Si vous utilisez SharedPreffernces juste pour partager des données entre les activités, il est surpuissant.

Dans le cas où les données devraient être disponibles après le redémarrage de l'application, vos solutions sont bonnes. Mais si vous n'en avez besoin qu'au moment de l'exécution, il est préférable d'utiliser Intention comme indiqué dans les autres réponses.

Personnellement, je préférerais le stocker dans une variable statique.

0

editor.commit() est manquant. Il est préférable d'utiliser un ensemble qui peut être défini dans intention et d'utiliser cette intention pour démarrer une autre activité, puis extraire les valeurs de l'ensemble d'intention.

0

Oui, vous pouvez utiliser SharedPrefernces. essayez le code ci-dessous

 public static final String MYPREFERNCES_Example = "mysharedpref"; 
    SharedPreferences.Editor editor ; 
    SharedPreferences sp; 

    sp = getSharedPreferences(MYPREFERNCES_Example Context.MODE_PRIVATE); 
    editor=sp.edit(); 

    Intent i_login = new Intent(LoginActivity.this, HomeActivity.class); 
    editor.putString("yourownkey1", yourvalue); 
    editor.putString("yourownkey2", yourvalue); 
    editor.putString("yourownkey3", yourvalue); 
    startActivity(intent) 

et dans la prochaine activité

sp = getSharedPreferences(MYPREFERNCES_Example, 0); 
editor = sp.edit(); 
String fn = sp.getString("yourownkey1", ""); 
String ln = sp.getString("yourownkey2", ""); 
String fbemail = sp.getString("yourownkey3", "");