2016-07-03 2 views
-2

Im construire une application où j'ai une liste de tableaux avec des chaînes et un bouton. Quand j'appuie sur le bouton, il supprime la chaîne de la liste (avec string.remove) et l'affiche dans une autre activité .. Le problème est que lorsque je ferme l'application et la rouvre, tout redevient normal. Comment sauvegarder les modifications effectuées?Enregistrer la modification Chaîne au redémarrage dans Android

Voici le code:

 public class TasksActivity extends AppCompatActivity { 

private static ArrayList<String> list; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_tasks); 

    final Button tasksbtn = (Button) findViewById(R.id.btnfortasks); 
    Button checkTask = (Button) findViewById(R.id.remove_case); 

    final TextView tasksView = (TextView) findViewById(R.id.tasks_textView); 



    final ArrayList<String> tasks = new ArrayList<String>(); 
    tasks.add("one"); 
    tasks.add("two"); 
    tasks.add("three"); 
    tasks.add("four"); 
    tasks.add("five"); 
    tasks.add("six"); 





    Collections.shuffle(tasks); 
    tasksView.setText(tasks.get(0)); 


    assert tasksbtn != null; 
    tasksbtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Collections.shuffle(tasks); 
      tasksView.setText(tasks.get(0)); 


     } 
    }); 



    checkTask.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(TasksActivity.this, CompletedTasks.class); 
      intent.putExtra("completedTasks", tasks.get(0)); 
      tasks.remove(tasks.get(0)); 
      startActivity(intent); 

     } 
    }); 


} 



} 

Et la deuxième activité

public class CompletedTasks extends AppCompatActivity { 

String completedTasks; 
Global_Variable object = new Global_Variable(); 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_completed_tasks); 


    TextView completedTasksView = (TextView) findViewById(R.id.completed_tasks); 


    Intent intent = getIntent(); 

    completedTasks = intent.getExtras().getString("completedTasks"); 
    object.tasks.add(completedTasks + "\n"); 



    String a = ""; 
    for (int i = 0; i < object.tasks.size(); i++) { 
     a += object.tasks.get (i); 
     completedTasksView.setText(a); 
     Log.d("a", "a---------" + a); 


    } 

} 
    } 
+0

Merci pour le vote négatif .. Il est vraiment serviable ..:/ –

+0

Il est probablement parce que vous n'avez pas fourni de code. Souvent, il est difficile d'aider ou de comprendre ce que vous essayez d'atteindre sans voir le code. – babadaba

+0

Ok, je vais fournir mon code, mais je pense qu'il est plus utile d'apprendre cela d'une manière générale, comme les préférences partagées @babadaba mentionné .. (Désolé pour mon anglais) –

Répondre

0

Vous devriez probablement essayer de donner sérialisation. Veuillez regarder ci-dessous l'exemple d'exemple.

public class SerializationDemo extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Person person = new Person(); 
    person.setName("CoderzHeaven"); 
    person.setAddress("CoderzHeaven India"); 
    person.setNumber("1234567890"); 

    //save the object 
    saveObject(person); 

    // Get the Object 
    Person person1 = (Person)loadSerializedObject(new File("/sdcard/save_object.bin")); //get the serialized object from the sdcard and caste it into the Person class. 
    System.out.println("Name : " + person1.getName()); 
} 

public void saveObject(Person p){ 
    try 
    { 
     ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("/sdcard/save_object.bin"))); //Select where you wish to save the file... 
     oos.writeObject(p); // write the class as an 'object' 
     oos.flush(); // flush the stream to insure all of the information was written to 'save_object.bin' 
     oos.close();// close the stream 
    } 
    catch(Exception ex) 
    { 
     Log.v("Serialization Save Error : ",ex.getMessage()); 
     ex.printStackTrace(); 
    } 
} 

public Object loadSerializedObject(File f) 
{ 
    try 
    { 
     ObjectInputStream ois = new ObjectInputStream(new FileInputStream(f)); 
     Object o = ois.readObject(); 
     return o; 
    } 
    catch(Exception ex) 
    { 
    Log.v("Serialization Read Error : ",ex.getMessage()); 
     ex.printStackTrace(); 
    } 
    return null; 
} 
Person implements Serializable //Added implements Serializable 
{ 
String name=""; 
private String number=""; 
private String address=""; 
private static final long serialVersionUID = 46543445; 

public void setName(String name) 
{ 
    this.name = name; 
} 

public void setNumber(String number) 
{ 
    this.number = number; 
} 

public void setAddress(String address) 
{ 
    this.address = address; 
} 

public String getName() 
{ 
    return name; 
} 

public String getNumber() 
{ 
    return number; 
} 

public String getAddress() 
{ 
    return address; 
} 
    } 
    } 
+0

pouvez-vous modifier mon code? –

0

Vous pouvez essayer d'enregistrer vos modifications dans les SharedPreferences. Ensuite, lorsque vous reprenez votre application, lisez les modifications apportées à vos ShraredPreferences et appliquez-les à votre ListView ou à tout ce que vous utilisez.

Vous pouvez en savoir plus sur SharedPreferences ici: https://developer.android.com/training/basics/data-storage/shared-preferences.html

+0

Donc, le SharedPreferences enregistre la liste si je supprime une chaîne afin qu'elle ne soit pas vue à nouveau? –

+0

Oui. Vous devriez probablement travailler avec ListView ou RecyclerView pour afficher vos tâches. Utiliser un TextView avec \ n n'est pas une pratique courante. – babadaba

+0

Ok, je vais essayer votre chemin .. Merci :) –