SharedPreferences用于保存TextView的值?

时间:2013-10-13 12:20:13

标签: java android xml

我有一个包含三个片段的ViewPager。在第一个片段中我有一个Button,如果你按下显示两个TextView与不同的文本。如果我转到第三个片段然后我回到第一个片段,我不会看到更多的TextView。我知道你必须使用SharedPreferences才能失去价值,然后我制作了这段代码,但它不起作用。

    TextView1=(TextView)view.findViewById(R.id.textView1); 
    TextView2=(TextView)view.findViewById(R.id.textView2; 



    Button b1 = (Button) view.findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

             // CODE HERE

            SharedPreferences prefs = this.getSharedPreferences(
                      "com.MyPackage.AppName", Context.MODE_PRIVATE);                 
              SharedPreferences.Editor editor = prefs.edit();
              editor.putString("TextView1",TextView1.getText().toString());
              editor.putString("TextView2",TextView2.getText().toString());
              editor.commit();

}         );

为什么不起作用?如果当我关闭应用程序时我想删除存储在SharedPreferences中的值我该怎么办?

3 个答案:

答案 0 :(得分:0)

您目前提供的代码片段是正确的。我想你可能错过了一些代码来实际恢复存储的值(通过密钥获取首选项并使用setText),或者不要在正确的时间调用它。

尝试将此类代码放入您的活动的重写onResume方法中。

按下按钮存储状态是不常见的。在此处阅读有关活动生命周期的详细信息,并在特定时间为您提供which methods are automatically called

答案 1 :(得分:0)

要写入SharedPref,您可以使用以下代码:

String text = "Your text here";    
Context context = getApplicationContext();
AppPrefs appPrefs = new AppPrefs(context);
appPrefs.setSessionId(text);

要从SharedPref读取,您可以使用:

String textViewTextHolder = appPrefs.getSessionId();

答案 2 :(得分:0)

你应该考虑使用静态变量来做你想做的事情:

静态变量的示例:

public static int i = 1;

要在其他活动中访问此内容:

if(MainActivity.i == 1){
}

如果您想出于任何原因坚持使用共享偏好设置,您可以在应用启动上清除它们,但我建议您不要使用共享偏好设置来处理您的工作。