我有一个包含三个片段的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中的值我该怎么办?
答案 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){
}
如果您想出于任何原因坚持使用共享偏好设置,您可以在应用启动上清除它们,但我建议您不要使用共享偏好设置来处理您的工作。