在活动A中获取字符串值并将其保存为活动B的最佳方法是什么? 我认为Intents和SharedPreferences之间可能存在关系!
有人?
答案 0 :(得分:1)
在活动A中获取字符串值并将其保存为活动B的最佳方法是什么?
这取决于“保存活动B”的含义
如果您只想将其“传递”到B
并在那里使用,那么只需发送Intent
Intent i = new Intent(..., ...);
i.putExtra("someKey", someString);
startActivity(i);
并使用
之类的内容在B
(而不是onCreate()
之前)获取它
Intent intent = getIntent();
String foo = intent.getStringExtra("someKey");
如果你想让它真正坚持下去,那么SharedPreferences
会很好。文档中有一个很好的例子。
答案 1 :(得分:1)
有不同的方法来解决这个问题,但你选择的那个实际上取决于你的需求,这篇文章解释了你可以采取的不同方法。
http://www.doepiccoding.com/blog/?p=153
基本上,有:
-Shared Preferences
-Intent Extras
-Application Subclass
-SQLite数据库
所有这些都被详细解释......
问候!
答案 2 :(得分:1)
您可以在意图中存储不同的值。这是官方的Google示例: Google
<强>意图强>
在活动A:
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
Intent intent = new Intent(this, ActivityB.class);
String message = "Your String";
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
在活动B中:
Intent intent = getIntent();
String message = intent.getStringExtra(ActivityA.EXTRA_MESSAGE);
在活动A:
private static final String PREV_STRING_VALUE = "prevStringValue";
String value = "yourString";
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
sp.edit().putString(PREV_STRING_VALUE, value).apply();
在活动B中:
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String value = sp.getString(ActivityA.PREV_STRING_VALUE, "DefaultValue");
或其他一些方法:
传递数据的方法有很多种。但是,您需要哪种类型的实施始终取决于具体情况。如果您希望您的数据仅传递给下一个活动/片段并且它是临时数据,那么只需使用意图。
如果您在应用程序的进一步过程中需要数据,则使用SQLite数据库或SharedPreferences(如果它不是复杂的数据)。保存您的价值,您可以随时随地访问它。
答案 3 :(得分:0)
你可以通过很多方式做到这一点。
一个人正在使用偏好
所以例如
int myVal = 16;
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.edit().putInt("MY_KEY",myVal).commit();
然后,在您的下一个活动中
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
prefs.getInt("MY_KEY", 0); //Where 0 is the default value
您也可以使用意图,如您所说
int myVal = 16
Intent intent = new Intent(); //Make your intent as you normally would
intent.putExtra("MY_KEY", myVal);
在下一个活动的onCreate()
中:
int myVal = getIntent().getExtras().getInt("MY_VALUE");
然而,这些是基本实现。正如Artoo Detoo所说,有很多不同的方法可以做到这一点。您可以使用片段,静态类,其他包等来完成此操作。这取决于具体情况 - 最好使用intent方式,这样您就不会无缘无故地将值存储在首选项中。如果您只需要它从活动A转到活动B,只需使用intent方法。如果你需要在很多不同的地方,但不想跟踪它?使用prefs。
答案 4 :(得分:0)
非常感谢所有帮助过我的人,我很高兴看到有重要的人仍然关心我们。简单的解决方案是保存按钮的ID之间的冲突,因为在所有活动中都拥有相同的ID。这就是这个! 谢谢大家!
答案 5 :(得分:0)
存储字符串值并在另一个活动中恢复的简单方法是: 1)在第一个活动开始活动中,大多数返回结果为字符串(在创建最终的int变量之前,如RETURN_DATA_AS_STRING)
Intent intent = new Intent(getApplicationContext(), ReturningResultActivity.class);
startActivityintent(intent,RETURN_DATA_AS_STRING);
2)在商店数据的下一个活动中进行下一步:
Intent intent = new Intent();
intent.putExtra("SomeStringIdentifier", "this is resulting string");
setResult(RESULT_OK,intent);
3)在第一个活动覆盖onActivityResult():
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case RETURN_DATA_AS_STRING: {
String thisIsResultStringFromAnotherActivity = data.getStringExtra("SomeStringIdentifier");
}
}
}
}