如何在活动之间保存数据和传递数据

时间:2014-12-04 05:21:16

标签: android key

我有两个活动,First One将显示用户喜欢的值,如果设置,如果没有设置i" ll调用第二个活动设置fav值。当我下次运行应用程序时设置了fav值我应该从键值集中读取数据并在第一个活动中显示这些值

现在我可以设置键值并读取它并在同一个活动中显示它但是当我返回或重新启动应用程序时,不会读取存储在键值集中的数据, 任何人都可以帮助我,我在这里失踪, 或者有任何简单的方法来实现这一目标。

6 个答案:

答案 0 :(得分:1)

为此您必须在项目中实施SharedPreference。 谷歌搜索SharedPreferences演示

答案 1 :(得分:1)

将值设置为:

SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
Editor edit = pref.edit();
edit.putBoolean("news_icon_flag", true);
edit.putString("key","value");
edit.commit();

然后在任何活动中的任何需要的地方获取这些值,如下所示:

pref.getString("key","defaultvalue");

答案 2 :(得分:1)

用于将数据存储到android中,请参阅official Doc

在您的情况下,您可以使用SharedPreference

当你处于firstActivity时,将值传递给你的第二个活动

 Intent intent = new Intent(FirstActivty.this, SecondActivity.class);
 intent.putextra("key","value");
 startActivity(intent);

在执行此操作时,您可以在secondActivity中传递velue,现在您处于第二个活动

Intent intent = getIntent();
String = intent.getStringExtra("key");

 SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
 editor.putString("key", value);
 editor.commit();

用于从SharedPreferences

检索数据
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE); 
String restoredText = prefs.getString("key", null);

答案 3 :(得分:0)

您可以使用意图在活动之间传递数据。

Intent intent = new Intent(current.this, Destination_activity.class);
intent.putextra("keyName","value");
startActivity(intent);

在您的目标活动中,使用此功能获取“值”已发送

 String data = getIntent().getExtras().getString("keyName");

答案 4 :(得分:0)

如果要将第二个活动的数据读取到第一个活动,则必须设置数据 Intent Bundle并在onActivityForResult()中收听。

当您从拳头活动启动第二个活动时,请执行以下操作: -

Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent,REQUEST_CODE);

并在同一活动中覆盖方法: -

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
            String data = data.getStringExtra("fav");;
            SharedPreferences pref = PreferenceManager
            .getDefaultSharedPreferences(getApplicationContext());

           Editor edit = pref.edit();
           edit.putString("favourities", data);  //edit.putString("key","value");
           edit.commit();
           //More about SharedPref you can find [here][1]
        }
    }

并在您设置数据时的第二个活动中执行以下操作: -

String favourities=editText1.getText().toString();  
                Intent intent=new Intent();  
                intent.putExtra("fav", favourities);  

                setResult(RESULT_OK,intent);  

                finish();//finishing activity 

有关onActivityForResult的更多信息,您可以找到here

下次启动应用时,您可以通过调用

从SharedPref获取数据
SharedPreferences pref = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());
        String fav= pref.getString("favourities", null);

答案 5 :(得分:0)

使用此方法在共享首选项中保存/删除/更新数据:

   *   Method used to get Shared Preferences */

public SharedPreferences getPreferences() 
{
    return getSharedPreferences(<PREFRENCE_FILE_NAME>, MODE_PRIVATE);
}
/**
 *  Method used to save Preferences */
public void savePreferences(String key, String value) 
{
    SharedPreferences sharedPreferences = getPreferences();
    SharedPreferences.Editor editor = sharedPreferences.edit();
    editor.putString(key, value);
    editor.commit();
}
/**
 *  Method used to load Preferences */
public String loadPreferences(String key) 
{
    try {
        SharedPreferences sharedPreferences = getPreferences();
        String strSavedMemo = sharedPreferences.getString(key, "");
        return strSavedMemo;
    } catch (NullPointerException nullPointerException) 
    {
        Log.e("Error caused at  TelaSketchUtin loadPreferences method",
                ">======>" + nullPointerException);
        return null;
    }
}
/**
 *  Method used to delete Preferences */
public boolean deletePreferences(String key)
{
    SharedPreferences.Editor editor=getPreferences().edit();
    editor.remove(key).commit();
    return false;
}

对于从一个Activity传递到另一个Activity的数据:

Intent intent = new Intent(A.this, B.class);
 intent.putextra("key","value");
 startActivity(intent);

从其他活动接收数据

Intent intent = getIntent();
String = intent.getStringExtra("key");