1

我有 2 个活动,一个按意图向另一个发送数据。

我有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);

在活动1

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);

在活动 2

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 也显示为空。如何使当我打开我的应用程序或刷新我的应用程序时,intent extra 的值始终存在?而不是去 Activity1 再次保存它。

4

1 回答 1

0

您不需要传递要保存在 Intent 中的值。您使用 SharedPreferences 的方式已被弃用。

首选项 = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());

要在 prefs 中的适当位置保存和检索字符串值,可以使用以下命令:

// 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();
    }
于 2013-09-28T15:17:00.047 回答