2016-07-03 2 views
-2

Im создание приложения, где у меня есть список массивов со строками и кнопкой. Когда я нажимаю кнопку, она удаляет строку из списка (с помощью string.remove) и отображает ее в другом действии. Проблема в том, что когда я закрываю приложение и снова открываю его, все возвращается к нормальному состоянию. Как сохранить сделанные изменения?Сохранить изменения Строка при перезапуске в Android

Вот код:

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

     } 
    }); 


} 



} 

И вторая активность

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

Спасибо за отрицательное голосование .. Его действительно ПОЛЕЗНЫЕ ..:/ –

+0

Это, вероятно, потому, что вы не предоставили какой-либо код. Часто трудно понять или понять, чего вы пытаетесь достичь, не видя кода. – babadaba

+0

Хорошо, я предоставил свой код, но я думаю, что его более полезно изучить это в общем виде, как общие настройки @babadaba, упомянутые .. (Извините за мой английский) –

ответ

0

Вы, вероятно, следует дать попробовать сериализации. Пожалуйста, посмотрите ниже пример образца.

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

Можете ли вы изменить свой код? –

0

Вы можете попробовать сохранить свои изменения в SharedPreferences. Затем, когда вы переадресовываете свое приложение, ознакомьтесь с изменениями в ShraredPreferences и примените его к списку ListView или тому, что вы используете.

Вы можете прочитать больше о SharedPreferences здесь: https://developer.android.com/training/basics/data-storage/shared-preferences.html

+0

Итак, SharedPreferences сохраняет список, если я удаляю строку, чтобы ее не видели снова? –

+0

Да. Вероятно, вы должны работать с ListView или RecyclerView для отображения ваших задач. Использование TextView с \ n не является обычной практикой. – babadaba

+0

Хорошо, я попробую свой путь .. Спасибо :) –

Смежные вопросы