@feniksdv

Как в SharedPreferences дописывать данные в файл, а не заменять?

Есть поле ввода и кнопка сохранить, я вожу в строку значение, нажимаю на кнопку, данные записываются в файл, ввожу новое значение, жму снова кнопку, данные перезаписываются, а я хочу, чтобы они добавлялись уже к имеющимся строкам в файле.
MainActivity.java
package ru.l.sharedpreferences;

import androidx.appcompat.app.AppCompatActivity;

import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    private Button buttonOk;
    private EditText name;

    SharedPreferences test;

    final String NAME = "Тут лежит введенное Имя";

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

        buttonOk = (Button) findViewById(R.id.buttonOk);
        name = (EditText) findViewById(R.id.name);

        View.OnClickListener clickButton = new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                test();
            }
        };
        //присваеваем обработчик нажатия кнопки
        buttonOk.setOnClickListener(clickButton);
    }

    void test(){
        test = getSharedPreferences("name", MODE_PRIVATE);
        SharedPreferences.Editor ed = test.edit();
        ed.putString(NAME, name.getText().toString());
        ed.commit();
    }
}


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <EditText
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ems="10"
        android:inputType="textPersonName"
        android:text="Name" />

    <Button
        android:id="@+id/buttonOk"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        tools:layout_editor_absoluteX="222dp"
        tools:layout_editor_absoluteY="0dp" />

</LinearLayout>


name.xml
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
    <string name="Тут лежит введенное Имя">Name1</string> //вот тут то я и хочу сохранять всю историю, всех символов, которые были введины.
</map>
  • Вопрос задан
  • 51 просмотр
Решения вопроса 2
Bavashi
@Bavashi
ed.putString(NAME, name.getText().toString());

"Shared Preference can hold only single value for each key" (c).
Ответ написан
@feniksdv Автор вопроса
Нужно использовать SQLite либо попробовать привязать счетчик
ed.putString(NAME+i, name.getText().toString());
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ростов-на-Дону
от 100 000 до 180 000 ₽
XCritical Software Санкт-Петербург
До 370 000 ₽