getSharedPreferences Активность к фрагментам - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь сохранить данные об Деятельности и прочитать фрагмент.

public void saveData() {
        SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();

        editor.putString(kekoyaz,mykey );
        editor.apply();


        Toast.makeText(this, "Data saved", Toast.LENGTH_SHORT).show();
    }

Загрузить данные по фрагменту

public void loadData() {
        SharedPreferences sharedPreferences = getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
        //SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
        String beimtext = sharedPreferences.getString(kekoyaz, "");
        Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
    }

Но getSharedPreferences становятся красными на фрагменте, и это предлагаетсясоздать метод SharedPreferences.Так что я сделал, и ошибки не осталось.

private SharedPreferences getSharedPreferences(String sharedPrefs, int modePrivate) {
        return null;
    }

Я получаю сообщение об ошибке при запуске приложения.

E/AndroidRuntime: FATAL EXCEPTION: main
                  Process: com.prestige.user, PID: 32516
                  java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String android.content.SharedPreferences.getString(java.lang.String, java.lang.String)' on a null object reference
                      at com.prestige.user.BlankFragment.loadData(BlankFragment.java:1918)
                      at com.prestige.user.BlankFragment.onCreateView(BlankFragment.java:1898)

ОБНОВЛЕНИЕ

Я удалил эту строку

/*private SharedPreferences getSharedPreferences(String sharedPrefs, int modePrivate) {
        return null;
    }*/

и использую ваш код

public void loadData() {
        getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);    
        String beimtext = sharedPreferences.getString(kekoyaz);
        Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
    }

Я добавляю

private ResourceBundle sharedPreferences;

Но я снова получил ошибку.

Ответы [ 2 ]

0 голосов
/ 12 июня 2019

После обновления вопроса вы getSharedPreferences() набрали Activity, но не присвоили sharedPreferences значение переменной

enter image description here


Замените ваш код на .

public void loadData() {
        sharedPreferences = getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);    
        String beimtext = sharedPreferences.getString(kekoyaz);
        Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
}
0 голосов
/ 12 июня 2019

Это потому, что getSharedPreferences нужен контекст.

Итак, вы можете использовать следующее:

getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...