我有一个年龄输入编辑文本,我希望使用共享首选项(用于首次输入后)将用户以前的输入放在那里。我写了下面的代码,但强行关闭。有什么问题?
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//setting text for editText
age_editText.setText(my_prefs.getInt("age_value", 0) + ""); //when i delete this part, it doesn't force close
btn_calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Int age_value = Integer.parseInt(age_editText.getText().toString());
//shared preferences
sharedPreferences my_prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = my_prefs.edit();
editor.putInt("age_value", age_value);
editor_bmi.commit();
} catch (Exception e) {
Toast.makeText(getContext(), getString(R.string.please_fill_all_inputs), Toast.LENGTH_LONG).show();
}
}
});
答案 0 :(得分:1)
您需要使用getSharedPreferences()
代替getPreferences()
,如下所示。
SharedPreferences sharedPreferences = getSharedPreferences("name", MODE_PRIVATE);
注意: getPreferences()
和getSharedPreferences()
是返回不同Preference对象的两种不同方法。
答案 1 :(得分:0)
更改
sharedPreferences my_prefs = getActivity().getPreferences(Context.MODE_PRIVATE);
到
sharedPreferences my_prefs = getActivity().getSharedPreferences("my_pref", Context.MODE_PRIVATE);
并在上面写下
age_editText.setText(my_prefs.getInt("age_value", 0) + "");
正确的方法。
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
sharedPreferences my_prefs getActivity().getSharedPreferences("my_pref", Context.MODE_PRIVATE);
age_editText.setText(my_prefs.getInt("age_value", 0) + ""); //when i delete this part, it doesn't force close
btn_calculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
Int age_value = Integer.parseInt(age_editText.getText().toString());
SharedPreferences.Editor editor = my_prefs.edit();
editor.putInt("age_value", age_value);
editor_bmi.commit();
} catch (Exception e) {
Toast.makeText(getContext(), getString(R.string.please_fill_all_inputs), Toast.LENGTH_LONG).show();
}
}
});
}
答案 2 :(得分:0)
您可以使用以下方法将年龄保存到SharedPreferences:
public void saveAge(int age_value) {
SharedPreferences pre = getSharedPreferences("my_age", MODE_PRIVATE);
SharedPreferences.Editor editor = pre.edit();
editor.putInt("age_value", age_value);
editor.commit();
}
当你想要了解你的年龄时,请使用:
public int readAge() {
SharedPreferences pre = getSharedPreferences("my_age", MODE_PRIVATE);
int age = pre.getInt("age_value", 0);
return age;
}