如何在 Java 和 Android studio 中使用共享首选项类?

问题描述 投票:0回答:1

我在我的项目中使用共享首选项来存储用户信息,但是我遇到了程序遇到错误并且根本无法加载的问题,而就代码而言,我的代码没有问题。但是应用程序没有出现,并且错误文本也没有发送,以便我可以将其告诉您,应用程序只是关闭并且无法继续。 我该如何解决它?

这是我存储信息的类的代码:

public class UserManager {
private SharedPreferences sharedPreferences;

public UserManager(Context context) {
    sharedPreferences = context.getSharedPreferences("user_information", Context.MODE_PRIVATE);
}

public void saveUserInformation(String fullName, String email, String gender) {
    @SuppressLint("CommitPrefEdits") SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString("full_name", fullName);
    editor.putString("email", email);
    editor.putString("gender", gender);
    editor.apply();
}

public String getFullName() {
    return sharedPreferences.getString("full_name", "");
}

public String getEmail() {
    return sharedPreferences.getString("email", "");
}

public String getGender() {
     return sharedPreferences.getString("gender", "");
   }

}

这是我保存后收到信息的主类的代码:

public class MainActivity extends AppCompatActivity {

private UserManager userManager;
private String gender = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    userManager = new UserManager(this);

    TextInputEditText fullNameEt = findViewById(R.id.et_main_fullName);
    fullNameEt.setText(userManager.getFullName());
    TextInputEditText emailEt = findViewById(R.id.et_main_email);
    emailEt.setText(userManager.getEmail());
    RadioGroup genderRadioGroup = findViewById(R.id.radioGroup_main_gender);
    genderRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            if (checkedId == R.id.btn_main_male) {
                gender = "male";
            } else {
                gender = "female";
            }
        }
    });
    gender = userManager.getGender();
    if (gender.equalsIgnoreCase("male")) {
        genderRadioGroup.check(R.id.btn_main_male);
    } else if (gender.equalsIgnoreCase("female")) {
        genderRadioGroup.check(R.id.btn_main_female);
    }
    View saveBtn = findViewById(R.id.btn_main_save);
    saveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            userManager.saveUserInformation(fullNameEt.getText().toString(),
                    emailEt.getText().toString(),
                    gender);
         }
     });

    }
}
java android kotlin android-studio android-developer-api
1个回答
0
投票

您能否附上错误消息

顺便说一句,您应该迁移到 DataStore Preferences 而不是共享首选项。

如果您需要有关数据存储的更多信息,请参阅本文

© www.soinside.com 2019 - 2024. All rights reserved.