这个问题很简单。 例如有2项活动主要活动和主要活动2. 如何从主要活动向主要活动2发送字符串(例如) 假设主要活动2获得字符串。它调用一个函数来更改该字符串。 然后如何将修改后的字符串发送回主活动?在活动之间发送变量
回答
从主要活动1发送字符串:
Intent intent = new Intent(this, MainActivity2);
intent.putExtra("string", stringVal);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
然后在主要活动中2,得到的字符串:
String str = getIntent().getExtras().getString("string");
然后,只需更改值,并将其发送回主要活动1,如果需要,您可以在onResume中获得意图,但检查是否存在空值。
因此,当主活动2收到该字符串并对其进行一些更改时。我可以通过使用上面编写的类似代码将它发回主活动活动,只需将MainActivity2更改为MainActivty并更改putExtra()的值? – Nikola
正确,试一试 –
这有效,但它并不安静,我正在寻找。我的问题不够具体,并为此感到遗憾。其实我想要的是留在主要活动的布局页面,而不是主要活动2发送字符串到主要活动2,它的布局弹出在我的设备上。长话短说,主要活动2接收字符串和设备始终停留在主要活动布局。主要活动2更改字符串(假设只替换2个字母),并将字符串发回主活动,我可以实际看到更改(例如,在文本视图中)。 – Nikola
的标准方式:
如果你想从活动1发送原始数据,以活性2,您需要使用Intent
。例如,如果你只是想发送一个字符串:
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivity(intent);
}
}
假设你改变活性2该字符串,也希望结果返回到活动1,你需要在Activty2使用的活性1 startActivityForResult()
和setResult()
。
例如:
public class Activity1 extends Activity {
public static final String EXTRA_STRING = "extra_string";
private static final int REQUEST_CODE = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {
// Get the string back
String changedString = data.getStringExtra(Activity2.EXTRA_STRING);
}
}
private void sendString(String s) {
Intent intent = new Intent(this, Activity2.class);
intent.putExtra(EXTRA_STRING, s);
startActivityForResult(intent, REQUEST_CODE);
}
}
在活性2:
public class Activity2 extends Activity {
public static final String EXTRA_STRING = "string_extra";
private String myString;
@Override
public void onCreate(Bundle bundle) {
// receive the string from activity1
if (getIntent() != null) {
myString = getIntent().getStringExtra(Activity1.EXTRA_STRING);
}
}
// Send the string back to activity1
private void sendBack() {
Intent data = new Intent();
data.putExtra(EXTRA_STRING, myString);
setResult(RESULT_OK, data);
finish();
}
}
该方法的缺点是只能发送原语的变量。如果要发送对象,则必须执行Parcelable
或Serializable
。
的快速简便的方法:
您可以发送任何类型的变量,活动,服务或任何你想使用EventBus之间的任何复杂的对象。请查看Documentation了解如何使用它。它非常快速和简单。
- 1. 如何在Android上的活动之间发送意图变量?
- 2. 使用自定义变量在活动之间发送数据
- 3. 在活动之间发送对象
- 4. 在活动之间发送数据时发生崩溃
- 5. 发送动作之间的变量调用
- 6. 在活动之间传递“偏好变量”,在原始活动中设置值
- 7. 如何在选项卡之间作为活动发送数据?
- 8. 在我的应用内的活动之间发送数据?
- 9. 错误在活动之间发送位图android
- 10. 如何在不同活动的片段之间发送数据
- 11. 在活动之间发送一个布尔值
- 12. Android使用Parcelable在活动之间发送数据
- 13. 如何在工作表和书籍之间发送变量?
- 14. 在窗体之间切换并正确发送变量
- 15. 如何在2个活动之间传递变量?
- 16. 在活动之间传递int变量Android
- 17. 在活动之间共享全局变量的最佳实践
- 18. 在活动之间滑动
- 19. 在php窗口之间发布变量
- 20. 在活动之间保持locationListener活动
- 21. 活动之间的广播发送/接收
- 22. Session变量不能页之间传送
- 23. 将非活动类之间的变量传递给android活动类
- 24. Zend在动作之间传递变量?
- 25. 在活动之间切换
- 26. 发送多个变量值到另一个活动
- 27. 将变量从活动发送到另一个
- 28. 通过表单发送页面之间的变量会话
- 29. 如何在android中的两个不同活动类之间发送位图
- 30. 如何在本地活动和服务之间来回发送数据
您将其作为结果意图的一部分返回 –