【Android】新版本Activity跳转新Activity返回后获取数据方式

在Activity跳转到新的Activity后,然后在新的Activity返回原来的Activity时,我们需要获取到从新的Activity获取到的数据,原来的做法是使用【startActivityForResult】,但是在新的Android版本中,此方法被废弃了。

原方案
使用【startActivityForResult】
FirstActivity跳转到TwoActivity
//FirstActivity跳转代码
 Intent intent = new Intent(FirstActivity.this,TwoActivity.class);
 startActivityForResult(intent,1000);
TwoActivity
//当此Activity退出时
Intent intent = new Intent();
intent.putExtra("returnFirst", "我回来了");
setResult(RESULT_OK,intent);
finish();
FirstActivity
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    //这个1000就是要和我们跳转时传入的值要相等
    if (requestCode == 1000 && resultCode == RESULT_OK) {
        String strReturn = data.getStringExtra("returnFirst");
        Log.e("FirstActivity","返回的数据:"+strReturn);
    }
}

此时步骤就结束了,但是需要注意的是,我们在TwoActivity返回FirstActivity的时候,需要监听一下back返回键,不然我们从back键返回的时候是无法在FirstActivity获取到TwoActivity的数据的。

TwoActivity监听back返回键
@Override
public void onBackPressed() {
   super.onBackPressed();
   Intent intent = new Intent();
   intent.putExtra("returnFirst", "我回来了");
   setResult(RESULT_OK,intent);
   finish();
}
新方案
FirstActivity
//activity跳转返回数据,新方法已经不需要传requestCode了
ActivityResultLauncher<Intent> intentActivityResult = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(), 
        new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if (result.getResultCode() == RESULT_OK) {
                    if (result.getData().getStringExtra("returnFirst") != null) {
                        String str = result.getData().getStringExtra("returnFirst");
                        Log.e(TAG, "返回数据: " + str);
                        //打印的数据为 ["我回来了"]
                    } 
                }
            }
        }
);



//页面跳转代码
Intent intent = new Intent(FirstActivity.this, TwoActivity.class);
intentActivityResult.launch(intent);
TwoActivity
Intent intent = new Intent();
intent.putExtra("returnFirst",  "我回来了");
setResult(RESULT_OK, intent);
finish();
OVER
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,如果您的Android Studio页面无法跳转,可能是由于以下原因: 1. 您的代码中存在错误,导致页面无法正常跳转。 2. 您的项目配置有误,导致页面无法正常跳转。 3. 您的Android Studio版本过低,无法支持某些功能。 解决方法: 1. 检查您的代码,确保没有错误。 2. 检查您的项目配置,确保正确设置。 3. 更您的Android Studio版本,以便支持更多功能。 希望以上信息能够帮助您解决问题。如果您还有其他问题,请随时联系我们。 ### 回答2: Android Studio 是一款用于开发 Android 应用程序的集成开发环境(IDE)。在开发过程中,可能会遇到页面无法跳转的问题。这个问题通常有以下几个可能的原因和解决方法: 1. Activity 未正确注册:在 AndroidManifest.xml 文件中,确保你的 Activity 已按照正确的格式进行注册。每个 Activity 应该包含一个 `<activity>` 标签,并声明其完整的类名。例如:`<activity android:name=".MainActivity">`。 2. Intent 配置错误:在进行页面跳转时使用的 Intent 可能存在问题。确保 Intent 的目标 Activity 已正确设置,并通过 startActivity() 方法启动它。另外,还要注意添加 FLAG_ACTIVITY_NEW_TASK 标志,以确保在需要时创建的任务。 3. 资源文件丢失或错误:如果页面的布局文件或资源文件存在问题,可能会导致页面无法跳转或者跳转后页面显示异常。请检查相关的布局文件和资源文件,确保它们不存在语法错误或其他问题。 4. 逻辑错误:在代码中可能存在逻辑错误,导致页面无法正常跳转。请检查相关的逻辑代码,确保在需要跳转的地方添加了正确的跳转代码,并没有其他错误导致跳转失败。 5. 编译错误:如果你对代码进行了修改但未重编译,可能会导致页面无法跳转。请确保你已执行了编译操作,以使最的代码生效。 总之,当遇到 Android Studio 页面无法跳转的问题时,我们应该首先检查以上所述的各个方面,以排除可能的问题。如果问题仍然存在,你可以查看错误日志、寻求社区或其他开发者的帮助,来解决这个问题。 ### 回答3: 在Android Studio中,页面无法跳转可能是由多种原因造成的。以下是一些可能的原因和解决方法: 1. 确保页面之间的跳转逻辑正确:首先,你应该检查代码中的页面跳转逻辑是否正确。确保在需要跳转到另一页面时,你使用了正确的Intent和跳转方法。 2. 检查页面布局和命名:确保你在布局文件中正确设置了页面元素和ID,并且在代码中正确地引用它们。另外,确保你在代码中使用了正确的页面类名,以便正确地实例化页面对象。 3. 检查manifest文件:在AndroidManifest.xml文件中,检查是否正确地注册了页面。确保给每个页面正确设置了intent-filter和activity标签。 4. 检查页面之间的传输数据:如果你在页面之间传输数据,确保你正确地传输了数据并在目标页面中正确地接收和处理了它们。你可以使用Bundle、Intent Extras或其他方式来传递数据。 5. 检查错误日志:如果上述方法都没有解决问题,你可以查看Android Studio的日志来查找可能的错误信息。在日志中,你可能会发现跳转过程中的错误或异常,以及其他相关的错误信息。 如果上述方法仍然无法解决问题,你可以考虑向相关的开发社区或论坛寻求帮助,并提供更具体的错误描述和代码示例,以便其他开发者更好地理解你的问题并提供解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值