安卓开发-数据回调与数据传输


(以下全部是以我写的一个点菜Dome为例子来进行说明)

一、 应用场景

  
  这是一个点菜界面:
在这里插入图片描述
我们点击相对应的图片就可以进行点菜,我们点击第一张图片,跳转到肉菜的Activity里。
在这里插入图片描述
可以看到这里有两个菜,你可以做点介绍,这里就不过多赘述了,很简单的。这里可以点多少份相对应的菜,我点了10份红烧大肠和20份红烧肉。
在这里插入图片描述
  这里你可以点击加号跟减号进行加减相对应的菜的份数,也可以直接输入自己想要的份数。
在这里插入图片描述
  点击确定,我们就会返回点菜页面,在菜单的下面会显示你点的东西、份数和价格,当然了,这里只用了TestView构件的单行显示,可以尝试多行显示,不过这样就要复杂一点。

  万法以简单的事情开始做会越做越简单。

以上就是数据回调的部分,接下来就是数据传输的过程了。
;我们点击结算,就会跳转到结算的Activity。
在这里插入图片描述
  可以看到我们的账单已经给出来了,记得三连哦。

二、代码部分

如何实现数据的回调呢?
在几年前,谷歌就已经抛弃了startactivityforresult以及其一系列的函数了,当你编写代码时可以发现这个函数会被划掉,Activity之间也不会进行跳转和数据传输。但书上没说啊,你说气不气人。反正我挺无语的,百度吧,出来的都是使用Kotlin语言去编写的,又看不懂,偶尔有个一两篇是Java的,官网也可以查到,但不会用。有些博客就是将官网的翻译一下就直接放出来,离谱至极。
好了,现在来看代码:

//这个是第一个Activity的
        //该方法要放在onCreate里面,不能放在监听器里
        ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                if(result.getResultCode() == Activity.RESULT_OK){
                    money1 = Integer.parseInt(result.getData().getStringExtra("m1")) * 10;
                    money2 = Integer.parseInt(result.getData().getStringExtra("m2")) * 20;
                    receivedDataTextView1.setText("红烧大肠" + "    " +result.getData().getStringExtra("m1") + "   " + money1);
                    Log.d("m1", result.getData().getStringExtra("m1"));
                    receivedDataTextView2.setText("红烧肉" + "    " + result.getData().getStringExtra("m2") + "   " + money2);
                    Log.d("m2", result.getData().getStringExtra("m2"));
                }
            }
        });

        img_meat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(orderActivity.this,meatActivity.class);
                launcher.launch(intent);//启动intent跳转
//                startActivity(intent);
            }
        });

//这个是第二个Activity的
        Buttonaffirm.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(meatActivity.this, orderActivity.class);
                intent1.putExtra("m1",Edit_value1.getText().toString());
                intent1.putExtra("m2",Edit_value2.getText().toString());
                setResult(RESULT_OK,intent1);
                finish();
            }
        });

其实回调数据就是这么简单,不过是使用了新的函数registerForActivityResult()去实现罢了,总体跟过时的那个差不多。
数据传输还没有过时,网上一查一大堆
数据传输
全部代码在CSDN上:Dome
也可以直接在评论区留下邮箱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

特辣番茄炒鸡蛋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值