Java 如何使用editor.putString(SharedReference)修改my string.xml文件中的字符串值?

Java 如何使用editor.putString(SharedReference)修改my string.xml文件中的字符串值?,java,android,string,development-environment,Java,Android,String,Development Environment,这是我的密码: SharedPreferences prefs= PreferenceManager.getDefaultSharedPreferences(getBaseContext()); Editor ed=prefs.edit(); ed.putString(getString(R.string.firsttemplate), "String Modified"); ed.apply(); ed.commit(); Toast.makeText(getBaseContext(), ge

这是我的密码:

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显示保存在my string值中的上一个文本


我还看到一些关于SharedReference的问题已经被问到了,但是没有帮助

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

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

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());

实际上我想在编辑后更改menuitem的标题。。修改是可以的,但当我重新启动应用程序时,该值再次更改为字符串的默认值。好的,如果您知道如何将title()设置为某个特定的menuitem,请告诉我。现在,您的字符串保存在您帐户实例的accessToken中。您可以使用
context
实例重新存储并保存它。活动是上下文,所以您可以将其作为参数传递。下面是使用SharedReferences的又一个示例。现在清楚了吗?在您共享的链接中,他们也在更改strings.xml中String的值,那么您怎么能说资源文件不能修改。。在您共享之前,我已经尝试过该代码,但我的代码在onClick()方法中,它给了我错误:P@ZeeshanKhalid不,您误解了)此表达式中的第一个参数:
ed.putString(getString(R.string.firsttemplate),“string Modified”)
只是保存值“String Modified”的键。因此,最近您可以通过键“getString(R.string.firsttemplate)”访问SharedReferences中的值。