2016-07-03 9 views
-2

Im Erstellen einer App, wo ich eine Array-Liste mit Zeichenfolgen und einer Schaltfläche habe. Wenn ich den Knopf drücke, löscht er den String aus der Liste (mit string.remove) und zeigt ihn in einer anderen Aktivität an. Das Problem ist, dass wenn ich die App schließe und sie wieder öffne, alles wieder normal wird. Wie speichern Sie die vorgenommenen Änderungen? HierSpeichern Sie die Änderung Zeichenfolge beim Neustart in Android

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

     } 
    }); 


} 



} 

Und die zweite Aktivität

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

Dank für die negative Stimme .. Seine hilfsbereit wirklich ..:/ –

+0

Es ist wahrscheinlich, weil Sie keinen Code vorsah. Oft ist es schwer zu helfen oder zu verstehen, was Sie erreichen möchten, ohne den Code zu sehen. – babadaba

+0

Ok Ich werde meinen Code zur Verfügung stellen, aber ich denke, es ist hilfreicher, dies in einer allgemeinen Art und Weise wie geteilte Präferenzen zu lernen. @babadaba erwähnt .. (Sorry für mein Englisch) –

Antwort

0

Sie wahrscheinlich versuchen, Serialisierung geben sollte. Bitte werfen Sie einen Blick auf das Beispiel unten.

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

kann ich meinen Code ändern? –

0

Sie könnten versuchen, Ihre Änderungen an den SharedPreferences zu speichern. Wenn Sie dann Ihre App erneut registrieren, lesen Sie die Änderungen aus Ihren ShraredPreferences und wenden Sie sie auf Ihre ListView oder was auch immer Sie verwenden.

Sie können hier mehr über SharedPreferences lesen: https://developer.android.com/training/basics/data-storage/shared-preferences.html

+0

Also die SharedPreferences speichert die Liste, wenn ich eine Zeichenfolge löschen, so dass es nicht wieder gesehen wird? –

+0

Ja. Sie sollten wahrscheinlich mit einem ListView oder einem RecyclerView arbeiten, um Ihre Aufgaben anzuzeigen. Die Verwendung eines TextView mit \ n ist keine übliche Vorgehensweise. – babadaba

+0

Ok ich werde deinen Weg versuchen .. Danke :) –

Verwandte Themen