Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在活动之间保存数据和传递数据_Android_Key - Fatal编程技术网

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

Android 如何在活动之间保存数据和传递数据,android,key,Android,Key,我有两个活动,第一个将显示用户最喜爱的值,如果设置了,如果未设置,我将调用第二个活动设置fav值。当下次运行应用程序时设置fav值时,我应该从键值集读取数据,并在第一个活动中显示这些值 现在我可以设置键值并读取它,并在同一活动中显示它,但当我返回或重新启动应用程序时,键值集中存储的数据不会被读取, 有人能帮我解决我在这里缺少的东西吗, 或者有什么简单的方法可以实现这一点。为此,您必须在项目中实现SharedReference。。 通过谷歌搜索SharedReferencesdemo您可以使用意图

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

现在我可以设置键值并读取它,并在同一活动中显示它,但当我返回或重新启动应用程序时,键值集中存储的数据不会被读取, 有人能帮我解决我在这里缺少的东西吗,
或者有什么简单的方法可以实现这一点。

为此,您必须在项目中实现
SharedReference
。。
通过谷歌搜索
SharedReferences
demo

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

Intent intent = new Intent(current.this, Destination_activity.class);
intent.putextra("keyName","value");
startActivity(intent);
在您的目的地活动中,使用此项来获取发送的“值”

将vlaues设置为:

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

有关将数据存储到android中的信息,请参见

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

当您处于firstActivity时,将值传递给第二个Activity,如下所示

 Intent intent = new Intent(FirstActivty.this, SecondActivity.class);
 intent.putextra("key","value");
 startActivity(intent);
进行此操作时,您可以在第二个活动中通过velue,现在您处于第二个活动中

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

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

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

如果要将数据从第二个活动读取到第一个活动,则必须在中设置数据 意图绑定并在onActivityForResult()中侦听它

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

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 
有关OnActivity的更多信息,请参见

下次启动应用程序时,您可以通过拨打电话从SharedRef获取数据

SharedPreferences pref = PreferenceManager
                .getDefaultSharedPreferences(getApplicationContext());
        String fav= pref.getString("favourities", null);

使用此方法在共享优先级中保存/删除/更新数据:

   *   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;
}
从其他活动接收数据

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

您是否尝试通过intent传递数据?使用
SharedReference
存储数据,使用
putExtra
在活动之间传递数据使用首选项或数据库我的朋友检查此项。[在活动之间传递数据的不同方式][1][1]:
Intent intent = new Intent(A.this, B.class);
 intent.putextra("key","value");
 startActivity(intent);
Intent intent = getIntent();
String = intent.getStringExtra("key");