我知道这个主题被打败了,但我仍无法找到答案。
我有一个activity1
正在运行。
我从activity2
启动activity1
:
Intent newIntent1 = new Intent(this,activity2.class);
startActivity(newIntent1);
我在activity2中获得了一些值,我需要将它们作为字符串返回给activity1。
如果我使用:
Intent newIntent = new Intent(this,activity1.class);
newIntent.PutExtra("dataname",SomeString);
startActivity(newIntent);
我再次启动activity1
。但我需要将SomeString
从activity1
返回到原来的activity2
。那么我应该使用其他东西而不是意图吗?
答案 0 :(得分:0)
以startActivityForResult
开始您的activity2,并使用setResult()
方法将数据从activity2发送回activity1。在activity1中,您需要覆盖onActivityResult
以更新activity2
试试如下:
从Acivity1启动Activity2为:
Intent intnt = new Intent(this, activity2.class);
startActivityForResult(intnt, 1);
activity2 中的使用 setResult 发送数据:
Intent intent = new Intent();
intent.putExtra("keyvalue","value_here")
setResult(RESULT_OK, intent);
finish();
并在 activity1 中接收数据为onActivityResult
:
onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == RESULT_OK){
String stredittext=data.getStringExtra("keyvalue");
}
}
答案 1 :(得分:0)
最简单的方法是将主活动类中的String(不在onCreate方法中)声明为静态,并在要将其引用的任意数量的活动中访问该字符串 其他活动中的MainActivity.stringName和 MainActivity中的stringName。
答案 2 :(得分:0)
到目前为止你做得还不错,你只需要请求你设定的值
在您的oncreate中(在您的活动中为1)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
String value = extras.getString("dataname");
}
}