2012-07-23 6 views
0

J'essaie d'enregistrer et charger une chaîne vers/depuis le stockage interne d'une manière qui permet à l'utilisateur de quitter l'application, même éteindre le téléphone, mais toujours accéder à cette chaîne à chaque fois l'application est utilisée.Charger le fichier du stockage interne dans Android

Lorsque je quitte l'application et ré-entrer, il ne sera pas charger la chaîne que je stocké précédemment. J'en ai besoin pour charger la chaîne précédente même si je redémarre le téléphone. Voici ce que j'ai jusqu'à présent:

EditText sharedData; 
TextView dataResults; 
FileOutputStream fos; 
String FILENAME = "InternalString"; 

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.sharedpreferences); 
    setupVariables(); 
} 

private void setupVariables() { 
    // TODO Auto-generated method stub 
    sharedData = (EditText) findViewById(R.id.editText_SharedPrefs); 
    dataResults = (TextView) findViewById(R.id.textView_LoadSharedPrefs); 
    Button save = (Button) findViewById(R.id.button_save); 
    Button load = (Button) findViewById(R.id.button_load); 
    save.setOnClickListener(this); 
    load.setOnClickListener(this); 
    try { 
     fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.button_save: 
     String data = sharedData.getText().toString(); 
     try { 
      fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
      fos.write(data.getBytes()); 
      fos.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     break; 
    case R.id.button_load: 
     String collected = null; 
     FileInputStream fis = null; 
     try { 
      fis = openFileInput(FILENAME); 
      byte[] dataArray = new byte[fis.available()]; 
      while(fis.read(dataArray) != -1){ 
       collected = new String(dataArray); 
      } 
      dataResults.setText(collected); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } finally { 
      try { 
       fis.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
     break; 
    } 
} 
+0

Bienvenue sur Stack Overflow! Nous aimons généralement les questions sur ce site à propos de problèmes de programmation spécifiques. Quel est exactement votre problème? – gobernador

+0

Oh chéri - j'ai oublié de préciser ce qui se passait, excuses! Lorsque je quitte l'application et que je l'entre de nouveau, il ne chargera pas les données que j'ai stockées précédemment. –

Répondre

0

En fonction de ce genre de « chaîne » vous vous devez utiliser l'aide SharedPreferences plutôt que d'écrire des fichiers ... à moins que c'est un grand nombre de données.

getSharedPreferences(getPackageName() , MODE_PRIVATE).edit().putString("myString").commit(); 

Cela persistera à travers les cycles téléphoniques. Il sera perdu si vous désinstallez l'application cependant (ce qui est probablement une bonne chose).

Voici le doc Android pour toutes les différentes données d'économie possibilités ouvertes pour vous ...

Saving Stuff On Android

+0

Cela fonctionne! Très apprécié :) –

+0

vous êtes les bienvenus! –

Questions connexes