android - 无法从 sharedpreferences 获取值

标签 android sharedpreferences

我想从下面定义的 sharedpreference 加载 Name 的值,但我不能。如何提取 Name 的值并将其烘烤或最好将其放在文本字段中?

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 类

公共(public)类 ProfilePreferenceActivity 扩展 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",...)

这样你就创建了(据我所知)不同的共享偏好并且无法读取你写入另一个的数据。

关于android - 无法从 sharedpreferences 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10306908/

相关文章:

android - 如何在android中保存switchcompat的状态?

android - 在不使用 android 中的共享 pref 和数据库的情况下,在重新加载 Activity 时保留 "data or string"?

android - SharedPreferences 值未更新

android - 如何调试 Gradle 同步失败,没有其他信息?

android - Eclipse 模拟器没有响应

java - 如何创建 Flow TextView

android - 通过 InfoWindow 将数据发送到另一个 Android Activity

java - 如何处理来自 sharedpreferences getStringSet 的数据?

Flutter - 将 json 数据保存在本地以备将来使用

java - 如何在我的游戏中实现 SharedPreferences