我有一个TextView,它包含一个文本,我想在按钮点击时更改它并将其保存在sharedpreferences上,直到应用程序重新启动,然后它将恢复为默认文本。
这是我的代码:
TextView questionText = (TextView)findViewById(R.id.perso);
questionText.setText("Default text");
Button button = (Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
resetConsent();
questionText.setText("You clicked on the button");
}
});
答案 0 :(得分:0)
创建一个扩展Application类的单个类,这将维持该值,直到您的应用程序被打开,并且还可以在您的应用程序中的不同活动中访问。如果您真的需要使用sharedPreferences,可以使用相同的概念进行扩展。
有关androids Application
class here
public class Mydata extends Application {
private static Mydata d;
private static String textVal;
public Mydata getInstance(){
return d;
}
@Override
public void onCreate() {
super.onCreate();
d= this;
}
}
单击该按钮可将数据保存在单个班级中。
public void onClick(View v) {
resetConsent();
questionText.setText("You clicked on the button");
Mydata.textVal=questionText.getText().toString();
}
});
在onCreate()方法中,将TextView
中的值设置为:
questionText.setText(Mydata.textVal);
您还可以查看新的LifeCycle
安卓库:https://developer.android.com/topic/libraries/architecture/lifecycle
答案 1 :(得分:0)
只需使用SharePreferences文档中的代码here你可以看到代码snipet在链接中读取和写入而不是使用putInt和getInt使用putString和getString你需要一个Key来识别值你刚刚救了。
答案 2 :(得分:0)
这是示例代码,
public class MainActivity extends AppCompatActivity {
private static final String TAG =MainActivity.class.getSimpleName() ;
private TextView questionText ;
private Button button ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v(TAG,"onCreate");
setContentView(R.layout.activity_main);
button = findViewById(R.id.button);
questionText = findViewById(R.id.perso);
questionText.setText("Default text");
//Setting curent text into the shared preferance
setSharedpreferance("ButtonText1",questionText.getText().toString());
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
questionText.setText("You clicked on the button");
setSharedpreferance("ButtonText1",questionText.getText().toString());
Log.v(TAG,"Sharedpref value"+getSharedpreferance("ButtonText1"));
}
});
}
@Override
protected void onResume() {
super.onResume();
Log.v(TAG,"onResume");
questionText.setText(getSharedpreferance("ButtonText1"));
}
private void setSharedpreferance(String key, String value)
{
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString(key, value); // Saving string
// Save the changes in SharedPreferences
editor.apply();
}
private String getSharedpreferance(String key){
//To get the sharedpreferance value
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
return pref.getString(key, null);
}
}
您应该查看android活动生命周期 当一个新活动创建时,如果OnResume()在Activity类中可用,它将调用以下内容。 Oncreate->的onResume