我有两个不同activity向第三个activity使用intent.putstring传递参数
时间: 2024-05-13 07:15:55 浏览: 18
你可以使用以下代码在两个不同的Activity中使用Intent来传递参数到第三个Activity:
在第一个Activity中:
```java
Intent intent = new Intent(this, ThirdActivity.class);
String message = "This is the message from the first activity";
intent.putExtra("message", message);
startActivity(intent);
```
在第二个Activity中:
```java
Intent intent = new Intent(this, ThirdActivity.class);
String message = "This is the message from the second activity";
intent.putExtra("message", message);
startActivity(intent);
```
在第三个Activity中,你可以使用以下代码检索传递的参数:
```java
Intent intent = getIntent();
String message = intent.getStringExtra("message");
```
在这个例子中,`"message"`是键的名称,它可以是任何你喜欢的字符串。在第三个Activity中,你将使用相同的键来检索在第一个或第二个Activity中传递的参数。
相关问题
Bundle args = new Bundle(); args.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); args.putString(Intent.EXTRA_PERMISSION_GROUP_NAME, mPermGroupName); args.putParcelable(Intent.EXTRA_USER, mUser); args.putString(EXTRA_CALLER_NAME, mCaller); args.putLong(EXTRA_SESSION_ID, mSessionId); args.putString(GRANT_CATEGORY, mGranted); navigateSafe(Navigation.findNavController(holder.itemView), R.id.perm_groups_to_app, args);详细解析
这段代码是用于创建一个 Bundle 对象,并向其中添加了一些数据。Bundle 是一个键值对的对象,可以用于在不同的组件之间传递数据,例如在 Activity 之间传递数据,或者在 Fragment 之间传递数据。
在这段代码中,使用 putString 方法向 Bundle 对象中添加了多个键值对,每个键值对都是一个字符串。其中,Intent.EXTRA_PACKAGE_NAME 和 Intent.EXTRA_PERMISSION_GROUP_NAME 是 Android 系统中定义好的常量,用于表示应用程序的包名和权限组名。mPackageName 和 mPermGroupName 是自定义的变量,分别表示应用程序的实际包名和权限组名。
mUser 是一个 Parcelable 类型的对象,表示当前用户的信息。使用 putParcelable 方法将其添加到 Bundle 对象中。
EXTRA_CALLER_NAME、EXTRA_SESSION_ID 和 GRANT_CATEGORY 都是自定义的字符串常量,分别表示调用者的名称、会话 ID 和授权类别。使用 putString 和 putLong 方法将它们添加到 Bundle 对象中。
最后,使用 navigateSafe 方法将 Bundle 对象传递给目标 Fragment,并使用 R.id.perm_groups_to_app 参数指定目标 Fragment 的 ID。navigateSafe 方法是一个自定义的安全导航方法,用于确保导航时不会发生异常或崩溃。
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 将照片路径保存在 Bundle 中 Bundle extras = new Bundle(); extras.putString("photo_path", mCurrentPhotoPath); // 启动新的 Activity 并传递 Bundle Intent intent = new Intent(this, NewActivity.class); intent.putExtras(extras); startActivity(intent);这段代码中intent.putExtras(extras)标红是为什么,怎么解决
这里标红的原因是 `Intent` 类中的 `putExtras()` 方法需要传入一个 `Bundle` 类型的参数,而你传入的是一个 `Bundle` 对象的引用。这种情况下,可以将 `extras` 直接传入 `Intent` 的构造方法中,如下所示:
```
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("photo_path", mCurrentPhotoPath);
startActivity(intent);
```
或者使用 `putExtra()` 方法,传入键值对的方式:
```
Intent intent = new Intent(this, NewActivity.class);
intent.putExtra("photo_path", mCurrentPhotoPath);
startActivity(intent);
```
这两种方式都可以正确地传递数据到新的 Activity 中。