-1

I'm trying to save data on Activity and read on the Fragment.

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();
    }

Load data on fragment

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();
    }

But getSharedPreferences turn red on the fragment and it's suggested to create SharedPreferences method. So I did and there is no error left.

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

I get error when I run the app.

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)

UPDATE

I removed this line

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

and I use your code

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

I add

private ResourceBundle sharedPreferences;

But I got an error again.

Dorbagna
  • 307
  • 1
  • 4
  • 16
  • **getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);** try this – DeePanShu Jun 12 '19 at 12:52
  • Well, what do you expect when you have a method that returns null? – Zoe Jun 12 '19 at 13:00
  • Possible duplicate of [Android SharedPreferences in Fragment](https://stackoverflow.com/questions/11741270/android-sharedpreferences-in-fragment) – Zoe Jun 12 '19 at 13:00
  • Actually when I add "SharedPreferences sharedPreferences = this.getActivity().getSharedPreferences("sharedPreferences", Context.MODE_PRIVATE);" I got no error but my value doesn't show up.Only text appear string text "bu". – Dorbagna Jun 12 '19 at 13:31

2 Answers2

0

This is because getSharedPreferences need a Context.

So, you can use the following:

getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);
ישו אוהב אותך
  • 28,609
  • 11
  • 78
  • 96
0

After you update your question, you getSharedPreferences() with Activity but did't assign sharedPreferences variable value

enter image description here


Replace your code with below.

public void loadData() {
        sharedPreferences = getActivity().getSharedPreferences(SHARED_PREFS, MODE_PRIVATE);    
        String beimtext = sharedPreferences.getString(kekoyaz);
        Toast.makeText(getActivity(), "bu"+beimtext, Toast.LENGTH_SHORT).show();
}
Jeffery Ma
  • 3,051
  • 1
  • 23
  • 26
  • Answer is correct.Thank you.Just mini edit. String beimtext = sharedPreferences.getString(kekoyaz,""); – Dorbagna Jun 12 '19 at 13:42