android - 关闭应用后不会更新共享首选项

时间:2016-02-20 06:02:48

标签: android sharedpreferences

我正在使用以下代码在return this.api .login(username, password) .map((res:Response) => res.json()) .mergeMap(data=> $http.get(data.id)); 中添加首选项并在onStop()中检索。一切正常但在杀死应用程序后,共享首选项未更新其值并且在安装应用程序后第一次插入的值是一直都在。

代码:

onActivityCreated()

1 个答案:

答案 0 :(得分:1)

创建一个包含片段的活动:

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

片段布局文件:

<?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>

我测试了这段代码,它对我来说非常合适。请检查并告诉我们您做错了什么?

相关问题