Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SharedReferences未正确保存或获取字符串_Android_Sharedpreferences - Fatal编程技术网

Android SharedReferences未正确保存或获取字符串

Android SharedReferences未正确保存或获取字符串,android,sharedpreferences,Android,Sharedpreferences,编辑:用户Guardanis在别处的评论解决了这个问题。 问题是我从未保存过它。我有一个保存功能,但从未将其保存到首选项。 从保存的首选项中获取字符串时,我一直得到空返回。我不确定SavedReferences是如何工作的,但我的理解是,当调用SharedReferences时,它会在手机上创建密钥对文件,以便您稍后可以返回该文件 我的程序本质上是一个字符串创建应用程序。当您按下按钮时,它会创建一个字符串作为sms发送。“我的设置”活动页面有四个编辑文本,用按钮单击保存其中的内容,然后返回主活

编辑:用户Guardanis在别处的评论解决了这个问题。

问题是我从未保存过它。我有一个保存功能,但从未将其保存到首选项。

从保存的首选项中获取字符串时,我一直得到空返回。我不确定SavedReferences是如何工作的,但我的理解是,当调用SharedReferences时,它会在手机上创建密钥对文件,以便您稍后可以返回该文件

我的程序本质上是一个字符串创建应用程序。当您按下按钮时,它会创建一个字符串作为sms发送。“我的设置”活动页面有四个编辑文本,用按钮单击保存其中的内容,然后返回主活动。最后一个按钮通过从keyvalue对获取值来创建字符串,并构造消息。但是,对于每个值,我总是得到null

这是设置页面的代码,然后是主页。请询问我是否可以添加更多,我没有添加所有代码,只是添加了SharedReferences部分

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上的整个项目本身的链接: