Java 共享优先权未正确保存
嗨,当我保存信息时,我在“姓氏”中写的东西复制到“名字字段”,无论我在“名字”中写什么,总是“舞者单选按钮”保存。 我想问题在于我的活动我不知道我写了什么=/ 这是一项活动:Java 共享优先权未正确保存,java,android,Java,Android,嗨,当我保存信息时,我在“姓氏”中写的东西复制到“名字字段”,无论我在“名字”中写什么,总是“舞者单选按钮”保存。 我想问题在于我的活动我不知道我写了什么=/ 这是一项活动: public class user_profile extends AppCompatActivity { private user_sample userSample = new user_sample(); user_sharedpref_manager user_sharedpref_manager
public class user_profile extends AppCompatActivity {
private user_sample userSample = new user_sample();
user_sharedpref_manager user_sharedpref_manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_user_profile);
user_sharedpref_manager = new user_sharedpref_manager(this);
userSample = user_sharedpref_manager.get_user();
EditText profile_firstname = findViewById(R.id.profile_firstname);
EditText profile_lastname = findViewById(R.id.profile_lastname);
RadioButton profile_gamer_button = findViewById(R.id.profile_gamer_radio_button);
RadioButton profile_dancer_button = findViewById(R.id.profile_dancer_radio_button);
RadioButton profile_soccer_player_button = findViewById(R.id.profile_soccer_player_radio_button);
Button profile_save_button = findViewById(R.id.profile_save_button);
profile_firstname.setText(userSample.getFirstname());
profile_lastname.setText(userSample.getLastname());
profile_firstname.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
userSample.setFirstname(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
profile_lastname.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
userSample.setLastname(charSequence.toString());
}
@Override
public void afterTextChanged(Editable editable) {
}
});
int career = userSample.getCareer();
if (career == user_sample.gamer) {
profile_gamer_button.setChecked(true);
} else if (career == user_sample.dancer) {
profile_dancer_button.setChecked(true);
} else if (career == user_sample.soccer_player) {
profile_soccer_player_button.setChecked(true);
}
profile_gamer_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
userSample.setCareer(user_sample.gamer);
}
});
profile_dancer_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
userSample.setCareer(user_sample.dancer);
}
});
profile_soccer_player_button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
userSample.setCareer(user_sample.soccer_player);
}
});
profile_save_button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
user_sharedpref_manager.save_user(userSample);
Toast.makeText(user_profile.this, "clicked", Toast.LENGTH_LONG).show();
}
});
}
}
共享首选项类:
public class user_sharedpref_manager {
private static final String PROFILE_SHARED_PREF = "profile_Shared_pref";
private static final String PROFILE_FIRST_NAME = "profile_first_name";
private static final String PROFILE_LAST_NAME = "profile_first_name";
private static final String CAREER = "career";
private SharedPreferences sharedPreferences;
public user_sharedpref_manager(Context context) {
sharedPreferences = context.getSharedPreferences(PROFILE_SHARED_PREF, Context.MODE_PRIVATE);
}
public void save_user(user_sample userSample) {
if (userSample != null) {
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(PROFILE_FIRST_NAME, userSample.getFirstname());
editor.putString(PROFILE_LAST_NAME, userSample.getLastname());
editor.putInt(CAREER, userSample.getCareer());
editor.apply();
}
}
public user_sample get_user() {
user_sample userSample = new user_sample();
userSample.setFirstname(sharedPreferences.getString(PROFILE_FIRST_NAME, ""));
userSample.setLastname(sharedPreferences.getString(PROFILE_LAST_NAME, ""));
userSample.setCareer(sharedPreferences.getInt(CAREER, user_sample.gamer));
return userSample;
}
}
它是保存的共享首选项:
<map>
<int name="career" value="1" />
<string name="profile_first_name">gftfgtdrrdrt</string>
您的两个键都有值“profile\u first\u name”
。我猜PROFILE\u LAST\u NAME
应该等于“PROFILE\u LAST\u NAME”
您的两个键都有值
“profile\u first\u name”
。我猜PROFILE\u LAST\u NAME
应该等于“PROFILE\u LAST\u NAME”
是的,谢谢……第一个问题解决了,只剩下单选按钮了……我认为我检查它们的方式是错误的,我在阅读代码时遇到了问题,因为它没有遵循Java编码准则。但是你能发布user\u sample
类吗?发布了…很抱歉编码不好=)你能给我一些例子吗?这些类的格式是错误的?类应该用标题大小写,所以UserSample
。变量应该是驼峰大小写,所以userSample
。你在某些地方也有,但不一致。常量/最终静态变量名称应使用所有大写字母,并用下划线分隔单词。查阅Java语法指南以了解更多详细信息。您还应该使用int
而不是byte
作为常量。是的,谢谢您忽略了这一点……第一个问题解决了,只剩下单选按钮……我想我检查它们的方式是错误的。我在阅读代码时遇到了问题,因为它没有遵循Java编码指南。但是你能发布user\u sample
类吗?发布了…很抱歉编码不好=)你能给我一些例子吗?这些类的格式是错误的?类应该用标题大小写,所以UserSample
。变量应该是驼峰大小写,所以userSample
。你在某些地方也有,但不一致。常量/最终静态变量名称应使用所有大写字母,并用下划线分隔单词。有关更多详细信息,请查阅Java语法指南。对于常量,还应使用int
notbyte
。
public class user_sample {
private String firstname ="";
private String lastname="";
public static final int gamer=0;
public static final int dancer=1;
public static final int soccer_player=2;
private int career=gamer;
public String getFirstname() {
return firstname;
}
public void setFirstname(String firstname) {
this.firstname = firstname;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public int getCareer() {
return career;
}
public void setCareer(int career) {
this.career = career;
}
private static final String PROFILE_FIRST_NAME = "profile_first_name";
private static final String PROFILE_LAST_NAME = "profile_first_name";