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