2012-04-24 21 views
1

以下に定義されているsharedpreferenceからNameの値をロードしたいと思います。 Nameの値を抽出してそれをトーストするか、理想的にはテキストフィールドに入れてもいいですか?sharedpreferencesから値を取得できません

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クラスです

パブリッククラスProfilePreferenceActivityアクティビティあなたは両方の場所でgetDefaultSharedPreferences()またはgetSharedPreferences("myCustomSharedPrefs",...)を使用する必要がありますいずれかの{

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; 

} 

}

+0

私は両方の場所で 'getDefaultSharedPreferences()'または 'getSharedPreferences(" myCustomSharedPrefs "、...)を使うべきだと思います。そうすることで、さまざまな共有設定を作成(AFAIK)できます。 – zapl

+0

答えを@zaplに移動したいですか?それが解決策です。 –

+0

私はそれを今得ました。どうもありがとう、あなたはそれを答えに移すことができ、私は検証します。 – callback

答えて

1

を拡張します。

このようにして(AFAIK)異なる共有設定を作成し、別の共有設定を書き込むのに失敗します。

関連する問題