Android intent extra不会在恢复时恢复

时间:2013-09-28 14:07:16

标签: android android-intent android-activity bundle

我有两个活动,一个是通过意图将数据发送给另一个。

我有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再次保存它。

1 个答案:

答案 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();
    }