我有两个活动,一个是通过意图将数据发送给另一个。
我有2个editText供用户输入值 保存后,它将显示在editText框中
savePreferences = getSharedPreferences("filename", Context.MODE_PRIVATE);
first = savePreferences.getString("first", "1st");
second = savePreferences.getString("second", "2nd");
editf1.setText(first);
editf2.setText(second);
在Activity1中
public static String filename = "myfile";
SharedPreferences savePreferences;
savePreferences = getSharedPreferences("filename", Context.MODE_PRIVATE);
SharedPreferences.Editor saveEditor = savePreferences.edit();
saveEditor.putString("first", edit1.getText().toString());
saveEditor.putString("second", edit2.getText().toString());
saveEditor.commit();
Intent myIntent = new Intent(this, Activity2.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//put the retrieved data in extras
Bundle extras = new Bundle();
extras.putString("firststr", first);
extras.putString("secondstr", second);
myIntent.putExtras(extras);
startActivity(myIntent);
在Activity2中
Intent intent = getIntent();
Bundle extras = intent.getExtras();
if (extras != null) {
firstval = extras.getString("firststr");
secondval = extras.getString("secondstr");
}
我有2个TextView来显示从Activity 1传递的数据
if (firstval == null || firstval == "")
textView1.setText("empty");
else
textView1.setText(firstval);
if (secondval == null || secondval == "")
textView2.setText("empty");
else
textView2.setText(secondval);
当我点击保存按钮时,该值将保存到共享首选项中,意图将开始并转到Activity2。 在此阶段,从Activity1保存并传递的值可以在我的TextViews中显示。
但是一旦刷新页面,TextView就显示为空。
当我的应用程序启动时,Activity2将首先启动,TextView也会显示为空。 我如何做到这一点,当我打开我的应用程序或刷新我的应用程序时,额外的意图值始终存在?而不是去Activity1再次保存它。
答案 0 :(得分:0)
您无需传递要在Intent中保存的值。不推荐使用SharedPreferences的方式。
prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
要在适当的位置保存和检索首选项中的字符串值,可以使用以下命令:
// Retrieve the saved values in Activity2
private String getCurrentDefaultHomeApp(){
return PreferenceManager.getDefaultSharedPreferences(getApplicationContext());.getString("Key", "DefaultValue");
}
// Put this in Activity1
private void setCurrentDefaultHomeApp(String appId){
SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());.edit();
editor.putString("Key", "value");
editor.commit();
}