在Android活动之间传递值

在Android活动之间传递值,android,android-intent,Android,Android Intent,我知道这个主题是错误的,但我仍然找不到我的问题的答案 我正在运行一个活动1 我从activity1启动activity2: Intent newIntent1 = new Intent(this,activity2.class); startActivity(newIntent1); 我在activity2中得到一些值,我需要将它们作为字符串返回给activity1 如果我使用: Intent newIntent = new Intent(this,activity1.class); newI

我知道这个主题是错误的,但我仍然找不到我的问题的答案

我正在运行一个
活动1

我从
activity1
启动
activity2

Intent newIntent1 = new Intent(this,activity2.class);
startActivity(newIntent1);
我在activity2中得到一些值,我需要将它们作为字符串返回给activity1

如果我使用:

Intent newIntent = new Intent(this,activity1.class);
newIntent.PutExtra("dataname",SomeString);
startActivity(newIntent);

我再次启动了
活动1
。但是我需要将
SomeString
activity2
返回到原始的
activity1
。因此,我是否应该使用其他方法而不是意图?

startActivityForResult
的形式启动activity2,并使用
setResult()
方法将数据从activity2发送回activity1。在activity1中,您需要覆盖ActivityResult上的
以更新来自
activity2的数据

尝试如下:

从Acivity1启动活动2的方式为:

Intent intnt = new Intent(this,  activity2.class);
startActivityForResult(intnt, 1);
活动2中使用设置结果将数据发送回:

Intent intent = new Intent();
intent.putExtra("keyvalue","value_here")
setResult(RESULT_OK, intent);        
finish();
活动1中以活动结果的
形式接收数据

onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == 1) {
         if(resultCode == RESULT_OK){
          String stredittext=data.getStringExtra("keyvalue");
    }
} 

最简单的方法是将主活动类(而不是onCreate方法)中的字符串声明为静态,并在希望引用该字符串的活动中访问该字符串 其他活动中的MainActivity.stringName和as
MainActivity中的stringName。

到目前为止,您做得还不错,只需请求已设置的值

在oncreate中(在activity1中的案例中)


try-startActivityForResult();您可以在启动activity2时使用startActivityForResult(),也可以在activity2中使用setResult()。然后进入活动结果进入活动1。使用此链接。为什么要投否决票???你能解释一下吗?DownVoter在downvoting之前一定要清除这些内容。在这种情况下:onActivityResult(requestCode=1,resultCode=RESULT\u OK,那么什么是数据?)当您将结果从第二个活动传递回第一个活动时,它将出现在ActivityResult中,如果数据成功传递,结果代码将是
result\u OK
@安德烈·卡巴尔马莱伊卡
@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");
    }
}