Android SharedReferences未正确保存或获取字符串
编辑:用户Guardanis在别处的评论解决了这个问题。 问题是我从未保存过它。我有一个保存功能,但从未将其保存到首选项。 从保存的首选项中获取字符串时,我一直得到空返回。我不确定SavedReferences是如何工作的,但我的理解是,当调用SharedReferences时,它会在手机上创建密钥对文件,以便您稍后可以返回该文件 我的程序本质上是一个字符串创建应用程序。当您按下按钮时,它会创建一个字符串作为sms发送。“我的设置”活动页面有四个编辑文本,用按钮单击保存其中的内容,然后返回主活动。最后一个按钮通过从keyvalue对获取值来创建字符串,并构造消息。但是,对于每个值,我总是得到null 这是设置页面的代码,然后是主页。请询问我是否可以添加更多,我没有添加所有代码,只是添加了SharedReferences部分Android SharedReferences未正确保存或获取字符串,android,sharedpreferences,Android,Sharedpreferences,编辑:用户Guardanis在别处的评论解决了这个问题。 问题是我从未保存过它。我有一个保存功能,但从未将其保存到首选项。 从保存的首选项中获取字符串时,我一直得到空返回。我不确定SavedReferences是如何工作的,但我的理解是,当调用SharedReferences时,它会在手机上创建密钥对文件,以便您稍后可以返回该文件 我的程序本质上是一个字符串创建应用程序。当您按下按钮时,它会创建一个字符串作为sms发送。“我的设置”活动页面有四个编辑文本,用按钮单击保存其中的内容,然后返回主活
public SharedPreferences sp;
public Editor e;
public void savethethings(){ //run this when enter is pressed/savew
EditText smsintro_hint = (EditText) findViewById(R.id.settings_smsintro_hint);
EditText smsbody_hint = (EditText) findViewById(R.id.settings_smsbody_hint);
EditText checkboxbody_hint = (EditText) findViewById(R.id.settings_checkboxbody_hint);
EditText checkboxbody_description_hint = (EditText) findViewById(R.id.settings_checkboxbody_description_hint);
String introstring = smsintro_hint.getText().toString();
String bodystring = smsbody_hint.getText().toString();
String checkboxbodystring = checkboxbody_hint.getText().toString();
String checkboxdescriptionstring = checkboxbody_description_hint.getText().toString();
e.putString("intro", introstring);
e.commit(); // you forgot to commit
if(!bodystring.isEmpty())
{
e.putString("body", bodystring);
e.commit();
}
if(!checkboxbodystring.isEmpty())
{
e.putString("checkbody", checkboxbodystring);
e.commit();
}
if(!checkboxdescriptionstring.isEmpty())
{
e.putString("checkboxdescr", checkboxdescriptionstring);
e.commit();
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.settingmenu);
//SP
sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); // forget about
// named preferences - get the default ones and finish with it
e = sp.edit();
Button tt = (Button)findViewById(R.id.savebutton);
tt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
public void save(View view)
{
//THINGS HAPPEN HERE WITH SHARED PREFERENCES :(
savethethings();
this.finish();
return;
}
改变这个
sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
到
改变这个
sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
到
改变这个
sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
到
改变这个
sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
到
试试这个
//declareation
private SharedPreferences _sPrefs=null;
//do this in oncreate
_sPrefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
//this is for your editor
SharedPreferences.Editor prefEditor = _sPrefs.edit();
试试这个
//declareation
private SharedPreferences _sPrefs=null;
//do this in oncreate
_sPrefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
//this is for your editor
SharedPreferences.Editor prefEditor = _sPrefs.edit();
试试这个
//declareation
private SharedPreferences _sPrefs=null;
//do this in oncreate
_sPrefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
//this is for your editor
SharedPreferences.Editor prefEditor = _sPrefs.edit();
试试这个
//declareation
private SharedPreferences _sPrefs=null;
//do this in oncreate
_sPrefs = getSharedPreferences("myPrefs", Context.MODE_PRIVATE);
//this is for your editor
SharedPreferences.Editor prefEditor = _sPrefs.edit();
该类提供了一个通用框架,允许您保存和检索基本数据类型的持久键值对。您可以使用SharedReferences保存任何基本数据:布尔值、浮点值、整数、长数和字符串
您可以按如下方式保存四个文本:
SharedPreferences shared=getSharedPreferences("app_name", Activity.MODE_PRIVATE);
shared.edit().putString("text_name1", "value1").commit();
然后在活动中(您需要将它们取回的地方)
该类提供了一个通用框架,允许您保存和检索基本数据类型的持久键值对。您可以使用SharedReferences保存任何基本数据:布尔值、浮点值、整数、长数和字符串
您可以按如下方式保存四个文本:
SharedPreferences shared=getSharedPreferences("app_name", Activity.MODE_PRIVATE);
shared.edit().putString("text_name1", "value1").commit();
然后在活动中(您需要将它们取回的地方)
该类提供了一个通用框架,允许您保存和检索基本数据类型的持久键值对。您可以使用SharedReferences保存任何基本数据:布尔值、浮点值、整数、长数和字符串
您可以按如下方式保存四个文本:
SharedPreferences shared=getSharedPreferences("app_name", Activity.MODE_PRIVATE);
shared.edit().putString("text_name1", "value1").commit();
然后在活动中(您需要将它们取回的地方)
该类提供了一个通用框架,允许您保存和检索基本数据类型的持久键值对。您可以使用SharedReferences保存任何基本数据:布尔值、浮点值、整数、长数和字符串
您可以按如下方式保存四个文本:
SharedPreferences shared=getSharedPreferences("app_name", Activity.MODE_PRIVATE);
shared.edit().putString("text_name1", "value1").commit();
然后在活动中(您需要将它们取回的地方)
不要使用
Editor
,请尝试SharedReferences.Editor
立即更改此设置。。。让我们看看。不。更改它没有任何作用。您在哪里调用此save(View-View)
方法?还是把你所有的代码都放进去?我编辑了帖子,我贴了一个链接,然后发布了保存方法。第一个代码块中的save方法是一个save(view)方法,它调用上面第二个代码块中的最后一个代码块。请尝试sharedReferences.Editor
,而不是Editor
,立即更改此方法。。。让我们看看。不。更改它没有任何作用。您在哪里调用此save(View-View)
方法?还是把你所有的代码都放进去?我编辑了帖子,我贴了一个链接,然后发布了保存方法。第一个代码块中的save方法是一个save(view)方法,它调用上面第二个代码块中的最后一个代码块。请尝试sharedReferences.Editor
,而不是Editor
,立即更改此方法。。。让我们看看。不。更改它没有任何作用。您在哪里调用此save(View-View)
方法?还是把你所有的代码都放进去?我编辑了帖子,我贴了一个链接,然后发布了保存方法。第一个代码块中的save方法是一个save(view)方法,它调用上面第二个代码块中的最后一个代码块。请尝试sharedReferences.Editor
,而不是Editor
,立即更改此方法。。。让我们看看。不。更改它没有任何作用。您在哪里调用此save(View-View)
方法?还是把你所有的代码都放进去?我编辑了帖子,我贴了一个链接,然后发布了保存方法。第一个代码块中的save方法是一个save(view)方法,它调用第二个代码块中的最后一个代码块。让我试试这个方法,我在两个活动中的onCreate方法中都更改了这两行,很遗憾,它没有改变任何东西。在我的dropbox上发送了一个带有项目文件链接和整个项目链接的粘贴箱:让我试试这个,我在两个活动的onCreate方法中都更改了这两行,很遗憾,它没有改变任何东西。在我的dropbox上发送了一个带有项目文件链接和整个项目链接的粘贴箱:让我试试这个,我在两个活动的onCreate方法中都更改了这两行,很遗憾,它没有改变任何东西。在我的dropbox上发送了一个带有项目文件链接和整个项目链接的粘贴箱:让我试试这个,我在两个活动的onCreate方法中都更改了这两行,很遗憾,它没有更改任何内容。已发送一个粘贴箱,其中包含指向项目文件以及发布在我的dropbox上的整个项目本身的链接: