无法从sharedpreferences获取价值 [英] Cannot get value from sharedpreferences

查看:104
本文介绍了无法从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆