如何使用 editor.putString(共享首选项)修改我的 String.xml 文件中的字符串值?

how to modify a string value in my String.xml file using editor.putString (sharedpreference)?

这是我的代码:

SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Editor ed=prefs.edit();
ed.putString(getString(R.string.firsttemplate), "String Modified");
ed.apply();
ed.commit();
Toast.makeText(getBaseContext(), getString(R.string.firsttemplate), Toast.LENGTH_SHORT).show();

此 Toast 显示了我的字符串值中保存的先前文本

我还看到了有关 SharedPreferences 的问题,但没有帮助。

您不能在运行时更改资源文件。字符串硬编码在 string.xml 文件中,因此在运行时无法更改。与其尝试编辑 strings.xml 文件,不如使用 SharedPreferences 来存储用户的首选项(如果您正在尝试这样做)。

您可以使用此代码作为从 SharedPreferences 保存和恢复值的基础。

public class Account {

private static Account account;
private static final String ACCESS_TOKEN = "access_token";
public String accessToken;

public static Account getInstance() {
    if (account == null)
        account = new Account();
    return account;
}

public void save(Context context) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
    Editor editor = prefs.edit();

    editor.putString(ACCESS_TOKEN, accessToken);

    editor.commit();
}

public void restore(Context context) {
    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
    accessToken = prefs.getString(ACCESS_TOKEN, accessToken);
}

private Account() {

}
}

现在您可以像这样访问您的值。正在恢复:

Account account = Account.getInstance();
account.restore(getActivity());
Toast.makeText(getActivity(), account.accessToken, Toast.LENGTH_SHORT).show();

节省:

Account account = Account.getInstance();
account.accessToken = "newString";
account.save(getActivity());