0

我有一个带有三个片段的 ViewPager。在第一个片段中,我有一个按钮,如果您按下显示两个具有不同文本的 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 中的值,我该怎么办?

4

3 回答 3

0

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

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

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

String textViewTextHolder = appPrefs.getSessionId();
于 2013-10-13T12:57:37.113 回答
0

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

静态变量示例:

public static int i = 1;

要在另一个活动中访问它:

if(MainActivity.i == 1){
}

如果您出于任何原因想坚持使用共享偏好,您可以在应用启动时清除它们,尽管我建议您不要使用共享偏好来执行您正在做的事情。

于 2013-10-13T12:59:51.253 回答
0

您当前提供的代码片段是正确的。我认为您可能错过了一些代码来实际恢复存储的值(通过 key 和 use 从首选项中获取setText),或者没有在正确的时间调用它。

尝试将此类代码放入onResume活动的覆盖方法中。

响应按下按钮存储状态是不寻常的。在此处阅读有关活动生命周期以及在特定时间自动为您调用哪些方法的更多信息。

于 2013-10-13T12:33:43.747 回答