почему текст редактирования не отображается при перезапуске приложения? - PullRequest
1 голос
/ 11 июля 2020

Я пытаюсь создать простое приложение, в которое после нажатия кнопки будет добавлен текст редактирования, я бы хотел, чтобы он сохранялся после ввода чего-либо в тексте редактирования. при перезапуске приложения я хотел бы видеть текст редактирования, который что-то содержит. Я не знаю, почему при перезапуске приложений данные из текста редактирования сохраняются, но текст редактирования снова становится невидимым. это мой код:

public class MainActivity extends AppCompatActivity {

private static final String PREFERENCES_NAME = "myPreferences";
private static final String PLIK_GLOWNEJ_KWOTY = "text_plik_glownej_kwoty";
private static final String PLIK_E1 = "text_pliku_e1";


private EditText WpiszKwote;
private TextView WpisanaKwota;
private Button Przycisk;
private Button Zapisz;
private EditText e1;
private EditText e2;
int x = 0 ;

private SharedPreferences preferences;





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

    preferences = getSharedPreferences(PREFERENCES_NAME, Activity.MODE_PRIVATE);

    //inicjalizacja pola

    WpiszKwote = (EditText) findViewById(R.id.WpiszKwote);
    WpisanaKwota = (TextView) findViewById(R.id.WpisanaKwota);
    Przycisk = (Button) findViewById(R.id.Przycisk);
    Zapisz = (Button) findViewById(R.id.Zapisz);
    e1 = (EditText) findViewById(R.id.editText1);
    e2 = (EditText) findViewById(R.id.editText2);
    if (TextUtils.isEmpty(e1.getText().toString())) {
        e1.setVisibility(View.GONE);
    }else {
        e1.setVisibility(View.VISIBLE);
    }
    if (TextUtils.isEmpty(e2.getText().toString())) {
        e2.setVisibility(View.GONE);
    }
    restoreData();

    //nasłuchiwanie pola edytowania textu

        WpiszKwote.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                String wpisana = WpiszKwote.getText().toString();
                WpisanaKwota.setText(wpisana);
            }

            @Override
            public void afterTextChanged(Editable s) {

            }
        });
        // nasłuchiwanie przycisku


    Przycisk.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            x++;
            Runnable run = new Runnable() {
                @Override
                public void run() {
                    x = 0;
                }
            };

            if (x == 1) {
                e1.setVisibility(View.VISIBLE);
            } else if (x == 2) {
                e2.setVisibility(View.VISIBLE);
            }
        }
    });


        // nasłuchiwanie przycisku zapisywania


        Zapisz.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                saveData();
                showToast("Dane zostały zapisane");

            }
        });


}
private void saveData() {
    SharedPreferences.Editor preferencesEditor = preferences.edit();
    String editTextData = WpiszKwote.getText().toString();
    String editTextData1 = e1.getText().toString();
    preferencesEditor.putString(PLIK_GLOWNEJ_KWOTY, editTextData);
    preferencesEditor.putString(PLIK_E1, editTextData1);
    preferencesEditor.commit();
}
private void restoreData() {
    String text_pliku_glownej_kwoty = preferences.getString(PLIK_GLOWNEJ_KWOTY, "");
    WpisanaKwota.setText(text_pliku_glownej_kwoty);
    String text_pola_e1 = preferences.getString(PLIK_E1, "");
    e1.setText(text_pola_e1);

}
private void showToast(String msg) {
    Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
}

}

Ответы [ 2 ]

0 голосов
/ 11 июля 2020

Простое изменение

if (TextUtils.isEmpty(e1.getText().toString())) {
    e1.setVisibility(View.GONE);
}else {
    e1.setVisibility(View.VISIBLE);
}
if (TextUtils.isEmpty(e2.getText().toString())) {
    e2.setVisibility(View.GONE);
}
restoreData();

на

restoreData();
if (TextUtils.isEmpty(e1.getText().toString())) {
    e1.setVisibility(View.GONE);
}else {
    e1.setVisibility(View.VISIBLE);
}
if (TextUtils.isEmpty(e2.getText().toString())) {
    e2.setVisibility(View.GONE);
}

Надеюсь, это поможет

0 голосов
/ 11 июля 2020

Я думаю, это потому, что вы сначала проверяете, пуст ли e1.text, а затем restoreData(). Сначала необходимо восстановить данные, а затем проверить, пустые они или нет.

...