无法从sharedpreferences获取价值 [英] Cannot get value from sharedpreferences
问题描述
我想从下面定义的sharedpreference加载Name的值,但是我不能.如何提取Name的值并将其烘烤或理想情况下将其放在文本字段中?
I would like to load the value of Name from the sharedpreference that is defined below, but I cant. How can I extract the value of Name and toast it or ideally put it in the text field?
public class FillingActivity extends Activity{
TextView username;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.foodandexercise);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String user = prefs.getString("namepref", "");
Toast.makeText(FillingActivity.this, user, Toast.LENGTH_LONG).show();
username = (TextView) findViewById(R.id.loggedastoedit);
username.setText("najib");
}
}
这是我的SharedPreferences类
and here is my SharedPreferences class
公共类ProfilePreferenceActivity扩展了活动{
public class ProfilePreferenceActivity extends Activity {
DatabaseAdapter usertable = new DatabaseAdapter(this);
float calnum, bmr;
String level, gender;
int Age, Height, Weight, temp;
RadioButton rb_male;
RadioButton rb_female;
RadioButton rb_light;
RadioButton rb_moderate;
RadioButton rb_heavy;
EditText name;
EditText age, weight, height;
RadioGroup genderradiogroup;
RadioGroup levelofactivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.createprofile);
SharedPreferences customSharedPreference = getSharedPreferences(
"myCustomSharedPrefs", Activity.MODE_PRIVATE);
name = (EditText) findViewById(R.id.namefield);
name.setText("");
age = (EditText) findViewById(R.id.agefield);
age.setText("");
genderradiogroup = (RadioGroup) findViewById(R.id.radioGroup2);
rb_male = (RadioButton) findViewById(R.id.maleradiobutton);
rb_female = (RadioButton) findViewById(R.id.femaleradiobutton);
genderradiogroup.check(customSharedPreference.getInt("genderprefs",
rb_male.getId()));
genderradiogroup.check(customSharedPreference.getInt("genderprefs",
rb_male.getId()));
weight = (EditText) findViewById(R.id.weightfield);
weight.setText("");
height = (EditText) findViewById(R.id.heightfield);
height.setText("");
levelofactivity = (RadioGroup) findViewById(R.id.radioGroup3);
rb_light = (RadioButton) findViewById(R.id.lightradiobutton);
rb_moderate = (RadioButton) findViewById(R.id.moderateradiobutton);
rb_heavy = (RadioButton) findViewById(R.id.heavyradiobutton);
levelofactivity.check(customSharedPreference.getInt("levelpref",
rb_light.getId()));
try {
Age = Integer.parseInt(age.getText().toString());
Weight = Integer.parseInt(weight.getText().toString());
Height = Integer.parseInt(height.getText().toString());
} catch (Exception e) {
}
Button addUser = (Button) findViewById(R.id.checkcreateprofilebutton);
addUser.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
savePreferences();
float calnumber = calculateCalories(Age, Weight, Height);
String lala = String.valueOf(calnumber);
Toast.makeText(ProfilePreferenceActivity.this, lala,
Toast.LENGTH_LONG).show();
usertable.open();
long id = usertable.createUser(name.getText().toString(), age
.getText().toString(), gender, weight.getText()
.toString(), height.getText().toString(), level,
calnumber);
Toast.makeText(ProfilePreferenceActivity.this,
"user added with" + level + gender, Toast.LENGTH_LONG)
.show();
usertable.close();
Intent Filling = new Intent();
Filling.setClass(ProfilePreferenceActivity.this,
FillingActivity.class);
startActivity(Filling);
}
});
}
private void savePreferences() {
SharedPreferences customSharedPreference = getSharedPreferences(
"myCustomSharedPrefs", Activity.MODE_PRIVATE);
SharedPreferences.Editor editor = customSharedPreference.edit();
editor.putString("namepref", name.getText().toString());
editor.putString("agepref", age.getText().toString());
editor.putInt("genderprefs", genderradiogroup.getCheckedRadioButtonId());
editor.putString("heightpref", height.getText().toString());
editor.putString("weightpref", weight.getText().toString());
editor.putInt("levelpref", levelofactivity.getCheckedRadioButtonId());
editor.putFloat("calpref", calnum);
editor.commit();
finish();
}
public float calculateCalories(int age, int weight, int height) {
if (rb_male.isChecked()) {
gender = "male";
bmr = 66.5f + (13.75f * weight) + (5.003f * height)
- (6.755f * age);
if (rb_light.isChecked()) {
level = "light";
calnum = bmr * 1.375f;
}
if (rb_moderate.isChecked()) {
level = "moderate";
calnum = bmr * 1.55f;
}
if (rb_heavy.isChecked()) {
level = "heavy";
calnum = bmr * 1.725f;
}
} else if (rb_female.isChecked()) {
gender = "female";
bmr = 665 + (9.563f * weight) + (1.850f * height) - (4.676f * age);
if (rb_light.isChecked()) {
level = "light";
calnum = bmr * 1.375f;
}
if (rb_moderate.isChecked()) {
level = "moderate";
calnum = bmr * 1.55f;
}
if (rb_heavy.isChecked()) {
level = "heavy";
calnum = bmr * 1.725f;
}
}
return calnum;
}
}
推荐答案
您应该在其中使用 getDefaultSharedPreferences()
或 getSharedPreferences("myCustomSharedPrefs",...)
两个地方.
You should either use getDefaultSharedPreferences()
or getSharedPreferences("myCustomSharedPrefs",...)
in both places.
这样,您将创建(AFAIK)不同的共享首选项,而无法读取您写入其他首选项的数据.
That way you create (AFAIK) different shared preferences and fail to read the data you write into the other.
这篇关于无法从sharedpreferences获取价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!