Reputation: 4623
I am using following code to add preference in onStop()
and retrieving in onActivityCreated()
.Everything works fine but after killing the app sharedpreference is not updating its value and a value inserted first time after installing app is remain all the time.
code:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SharedPreferences appdata = PreferenceManager.getDefaultSharedPreferences(this.getActivity());
etA.setText(appdata.getString("A", ""));
etB.setText(appdata.getString("B", ""));
}
@Override
public void onStop() {
super.onStop();
SharedPreferences appdata = PreferenceManager.getDefaultSharedPreferences(this.getActivity());
SharedPreferences.Editor editor = appdata.edit();
editor.putString("A", etA.getText().toString());
editor.putString("B", etB.getText().toString());
editor.commit();
}
Upvotes: 0
Views: 172
Reputation: 2446
Create an Activity that which contains a fragment:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_layout, new ContentFragment())
.commit();
}
public static class ContentFragment extends Fragment {
EditText etA, etB;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.main_fragment, container, false);
etA = (EditText) view.findViewById(R.id.et_a);
etB = (EditText) view.findViewById(R.id.et_b);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
SharedPreferences appdata = PreferenceManager.getDefaultSharedPreferences(getActivity());
etA.setText(appdata.getString("A", ""));
etB.setText(appdata.getString("B", ""));
}
@Override
public void onStop() {
super.onStop();
SharedPreferences appdata = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor editor = appdata.edit();
editor.putString("A", etA.getText().toString());
editor.putString("B", etB.getText().toString());
editor.commit();
}
}
}
Fragment layout file:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<EditText
android:id="@+id/et_a"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<EditText
android:id="@+id/et_b"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
I tested this code and its working perfectly for me. Please check and let us know what you are doing wrong?
Upvotes: 1