Невозможно сохранить данные через SharedPreferences в Android - PullRequest
0 голосов
/ 22 января 2020

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

Сообщение об ошибке Поле XXXXX должно быть числовым c

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

  class MyJavaScriptInterface {
        @JavascriptInterface
        @SuppressWarnings("unused")
        public void processHTML(final String html) {
            myWebView.post(new Thread() {
                @Override public void run() {
                    TextView text = findViewById(R.id.textView);



                    if(!sharedPreferences.contains("statusKey")){
                        sharedPreferences = getSharedPreferences("prefID", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = sharedPreferences.edit();
                        editor.putString("statusKey", html);
                        editor.apply();
                        text.setText(html);
                    }
                    else {
                        text.setText(sharedPreferences.getString("statusKey", ""));
                    }

                }
    });
        }
    }

Ответы [ 2 ]

1 голос
/ 22 января 2020

Вы запускаете sharedPreference поздно после проверки условия. Итак, сначала исправьте это.

class MyJavaScriptInterface {
    @JavascriptInterface
    @SuppressWarnings("unused")
    public void processHTML(final String html) {
        myWebView.post(new Thread() {
            @Override public void run() {
                TextView text = findViewById(R.id.textView);



                sharedPreferences = getSharedPreferences("prefID", Context.MODE_PRIVATE);
                if(!sharedPreferences.contains("statusKey")){
                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    editor.putString("statusKey", html);
                    editor.apply();
                    text.setText(html);
                }
                else {
                    text.setText(sharedPreferences.getString("statusKey", ""));
                }

            }
       });
    }
}
1 голос
/ 22 января 2020
class MyJavaScriptInterface {
    @JavascriptInterface
    @SuppressWarnings("unused")
    public void processHTML(final String html) {
        myWebView.post(new Thread() {
            @Override public void run() {
                TextView text = findViewById(R.id.textView);

                sharedPreferences = getSharedPreferences("prefID", Context.MODE_PRIVATE);
                if(!sharedPreferences.contains("statusKey")){

                    SharedPreferences.Editor editor = sharedPreferences.edit();
                    editor.putString("statusKey", html);
                    editor.apply();
                    text.setText(html);
                }
                else {
                    text.setText(sharedPreferences.getString("statusKey", ""));
                }

            }
});
    }
}

Попробуйте код выше

...