Как я могу использовать savedInstanceState и отображать текст в editText? - PullRequest
0 голосов
/ 01 августа 2020

Я хочу сохранить текст в editText, и когда я поворачиваю сотовый телефон, он снова отображается.

но, «он снова отображается», эта часть не работает, но тост работает.

Я думал, что "setText" - это тот ...

вот

MainActivity. java

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

        editText = findViewById(R.id.editText);
        button = findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                name = editText.getText().toString();
                showToast("saved : " + name);
            }
        });

        if (savedInstanceState != null){
            name = savedInstanceState.getString("name");
            showToast("restore : " + name);
            editText.setText("name");
        }
    }

    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        outState.putString("name", name);
        super.onSaveInstanceState(outState);
    }

    public void showToast(String data){
        Toast.makeText(this, data, Toast.LENGTH_LONG).show();
    }
}

1 Ответ

1 голос
/ 01 августа 2020

Вы заключили имя переменной в "", поэтому вы вводите фактический текст name в виде строки в текст редактирования, а не содержимое этой переменной. Удалите кавычки следующим образом:

        if (savedInstanceState != null) {
            String text = savedInstanceState.getString("name");
            editText.setText(text);
        }

EDIT

Я также предлагаю вам зафиксировать значение текста внутри текста редактирования во время saveInstanceState(), если глобальная переменная name оказывается нулевой. Вот так:

    @Override
    protected void onSaveInstanceState(@NonNull Bundle outState) {
        super.onSaveInstanceState(outState);
        String text = editText.getText().toString();
        outState.putString("name", text);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...