如何将字符串从一个活动发送到另一个活动?

Luc*_*lip 27 android android-activity

所以我在activity2中有一个字符串

String message = String.format(
"Current Location \n Longitude: %1$s \n Latitude: %2$s", lat, lng); 
Run Code Online (Sandbox Code Playgroud)

我想将此字符串插入activity1中的文本字段.我怎样才能做到这一点?先感谢您.

jbi*_*han 86

您可以使用意图,这是在活动之间发送的消息.在意图中,您可以放置​​所有类型的数据,String,int等.

在您的情况下,在进入activity2之前activity1,您将以这种方式存储String消息:

Intent intent = new Intent(activity2.this, activity1.class);
intent.putExtra("message", message);
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

activity1in中onCreate(),您可以String通过检索a Bundle(包含调用活动发送的所有消息)并getString()在其上调用来获取消息:

Bundle bundle = getIntent().getExtras();
String message = bundle.getString("message");
Run Code Online (Sandbox Code Playgroud)

然后你可以在下面设置文字TextView:

TextView txtView = (TextView) findViewById(R.id.your_resource_textview);    
txtView.setText(message);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 !


Rar*_*arw 13

您可以使用a将数据从一个活动发送到另一个活动 Intent

Intent sendStuff = new Intent(this, TargetActivity.class);
sendStuff.putExtra(key, stringvalue);
startActivity(sendStuff);
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过获取意图并提取额外的字符串来在第二个活动中检索此信息.在您的onCreate()方法中执行此操作.

Intent startingIntent = getIntent();
String whatYouSent = startingIntent.getStringExtra(key, value);
Run Code Online (Sandbox Code Playgroud)

然后你所要做的就是调用你的setText TextView并使用该字符串.


Roh*_*ngh 7

两种情况

当我们谈论在活动之间传递数据时,有两种可能的情况。

假设有两个活动 A 和 B,并且有一个字符串 X。而您在活动 A 中

现在让我们看看这两种情况

  1. A-------->B
  2. A<--------B

案例 1:
字符串 X 在 A 中,您想在活动 B 中获取它。

这是非常简单的。

在活动 A 中。

1) 创建意图
2) 放置额外的值
3) startActivity

Intent i = new Intent(A.this, B.class);
i.putExtra("Your_KEY",X);
startActivity(i)
Run Code Online (Sandbox Code Playgroud)

在活动 B

内部onCreate()方法使用您在存储 X (Your_KEY) 时使用的密钥检索字符串 X。

Intent i = getIntent();
String s = i.getStringExtra("Your_KEY");
Run Code Online (Sandbox Code Playgroud)

案例 2:
如果你是 Android 开发新手,这个案例有点棘手 因为你在活动 A 中,你移动到活动 B,收集字符串,移回活动 A 并检索收集的字符串或数据。让我们看看如何处理这种情况。

在活动 A
1) 创建意图
2) 使用请求代码启动活动。

Intent i = new Intent(A.this, B.class);
startActivityForResult(i,your_req_code);
Run Code Online (Sandbox Code Playgroud)

在活动 B 中
1) 将字符串 X 放入意图
2) 设置结果
3) 完成活动

Intent returnIntent = new Intent();
returnIntent .putString("KEY",X);
setResult(resCode,returnIntent);   // for the first argument, you could set Activity.RESULT_OK or your custom rescode too
finish();
Run Code Online (Sandbox Code Playgroud)

再次在 Activity A
1) 覆盖 onActivityResult 方法

onActivityResult(int req_code, int res_code, Intent data)
{
       if(req_code==your_req_code)
       {
          String X = data.getStringExtra("KEY")
       }
}
Run Code Online (Sandbox Code Playgroud)

进一步理解案例2

你可能想知道 reqCode、resCode 是什么 onActivityResult(int reqCode, resCode, Intent data)

当您必须确定从哪个活动获得结果时,reqCode很有用。

假设您有两个按钮,一个按钮启动相机(您单击照片并在您的活动中获取该图像的位图),另一个按钮启动 GoogleMap(结果您返回当前位置的坐标)。因此,为了区分这两个活动的结果,您可以使用不同的请求代码启动 CameraActivty 和 MapActivity。

resCode:当您必须区分结果如何返回到请求活动时很有用。

例如:您启动相机活动。当相机活动开始时,您可以拍照或直接返回请求活动,而无需按下后退按钮拍照。因此,在这两种情况下,您的相机活动分别发送具有不同 resCode ACTIVITY.RESULT_OK 和 ACTIVITY.RESULT_CANCEL 的结果。

相关链接

阅读更多关于获得结果