I am trying to save the data received by the fragment into a shared preference so that I can reuse the data stored in shared preference when the same fragment is recreated. But somehow the data is not getting saved and the default value of preference is returned to my fragment. Below is the code. Fragment implementing SharePreference
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
public class StreamFragment extends Fragment {
public String streamUrl=null;
TextView textView;
public static final String playerData="pData";
SharedPreferences playerSettings;
public StreamFragment(){};
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
SharedPreferences playerSettings = getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
streamUrl = playerSettings.getString(streamUrl,"No Link Found");
}
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_stream, container, false);
playerSettings = getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
streamUrl = playerSettings.getString("streamLink","No Link Found");
//getData();
Toast.makeText(getActivity(),"Stream Saved"+streamUrl,Toast.LENGTH_LONG).show();
return view;
}
public void getUrl(String data)
{
streamUrl=data;
playerSettings = this.getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = playerSettings.edit();
editor.putString("streamLink", streamUrl);
editor.commit();
Toast.makeText(getActivity(),"Stream Saved"+streamUrl,Toast.LENGTH_LONG).show();
}
}
Thanks in advance!
you are using two SharedPreferences playerSettings; one globally and one in onCreate and you are using upper one which is not initialized
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
public class StreamFragment extends Fragment {
public String streamUrl=null;
TextView textView;
public static final String playerData="pData";
SharedPreferences playerSettings;
public StreamFragment(){};
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
playerSettings = getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
streamUrl = playerSettings.getString("streamLink","No Link Found");
}
@Override
public View onCreateView( LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_stream, container, false);
playerSettings = getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
streamUrl = playerSettings.getString("streamLink","No Link Found");
//getData();
Toast.makeText(getActivity(),"Stream Saved"+streamUrl,Toast.LENGTH_LONG).show();
return view;
}
public void getUrl(String data)
{
streamUrl=data;
playerSettings = this.getActivity().getSharedPreferences(playerData, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = playerSettings.edit();
editor.putString("streamLink", streamUrl);
editor.commit();
Toast.makeText(getActivity(),"Stream Saved"+streamUrl,Toast.LENGTH_LONG).show();
}
}