你的答案肯定是 startActivityForResult 和 onActivityResult 。...举个最简单的场景,MainActivity 跳转到 SecondActivity ,SecondActivity 中按钮触发返回并传值回来。...中获取的结果。...上面的例子中,prepare() 方法传入的协议实现类是 StartActivityForResult 。它是 ActivityResultContracts 类中的静态内部类。...说好的解耦呢 ? 有时候我们可能会在结果回调中进行一些复杂的处理操作,无论是之前的 onActivityResult() 还是上面的写法,都是直接耦合在视图控制器中的。
startActivity用于页面间的正常跳转。 startActivityForResult用于页面间的跳转并回传数据,比如商城类的App下单时会有选择地址,选择之后地址更新。...(intent,1); } }); requestCode 是自定义的请求码,必须大于等于0才行,这点源码有声明 2.第二个页面,只放了一个按钮,主要是事件 findViewById...resultCode一般是正常或者取消,正常就是选择地址并返回,取消的情况比如,用户选择地址的时候突然又不想选了或者点错了,然后直接返回,这种情况可以默认不处理,处理的话就在这个页面监听一下返回键..., data); if (resultCode == 2) {//setResult中的标识码 if (requestCode == 1) {//startActivityForResult..., data); if (resultCode == 2) {//setResult中的标识码 if (requestCode == 1) {//startActivityForResult
本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一...表示设备自身的蓝牙适配器; 通过静态方法BlueAdapter.getDefaultAdapter()获得BlueAdapter; 整个系统只有一个蓝牙适配器,application可使用此BlueAdapter...Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult...mBluetoothAdapter.startDiscovery();//异步函数 } }); 运行之后点击“已配对设备”按钮...@Nullable Intent data) { ... } } } ---- demo(续上,监测扫描发现设备时、扫描完毕时两个状态,做对应处理): 点击“扫描附近蓝牙设备”按钮时
我把这个实例分为几个步骤解读: 1、父组件的button元素绑定click事件,该事件指向notify方法 2、给子组件注册一个ref=“child” 3、父组件的notify的方法在处理时,使用了...$refs.child把事件传递给子组件的parentMsg方法,同时携带着父组件中的参数msg 4、子组件接收到父组件的事件后,调用了parentMsg方法,把接收到的msg放到message数组中
假设我们有这样一个常用的场景: 有两个Activity,第一个Activity展示一段文本 点击“编辑”按钮启动第二个Activity,并把这段文本当做参数传递到第二个Activity 在第二个Activity...代码分散,可读性差 封装不彻底,调用方需要到EditActivity才能知道需要传递什么参数,类型是什么,key是什么 调用方需要知道EditActivity是如何返回的参数类型和key是什么才能正确解析...那 editContent 方法内部是如何实现的呢?...,依然需要通过 startActivityForResult 和 onActivityResult 来实现,所以我们这里通过一个不可见(没有界面)的 Fragment ,将这个过程封装起来,代码如下:...,在resumeWith方法中来接受结果,但也是比 startActivityForResult 的方式要好的多。
StartActivityForResult()接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在回调中判断数据的来源。...然后在SecondActivity中给按钮注册点击事件,并在点击事件中添加返回数据的逻辑 Intent intent = new Intent(); intent.putExtra...由于使用的是startActivityForResult()方法启动的SecondActivity的, 在被销毁之后会回调上一个活动的onActivityResult()方法,因此需要重写这个方法:...由于在一个活动中有可能调用startActivityForResult()方法启动很多不同的活动, 每一个活动返回的数据都会回调onActivityResult()方法,因此需要先判断requestCode...如果在SecondActivity中不是通过按钮点击返回的,而是按下Back键, 可以在SecondActivity中重写onBackPressed()方法解决问题: @Override public
调用的几种方式 用getActivity方法发起调用,只有父Activity的onActivityResult会调用,Fragment中的onActivityResult不会被调用 直接发起startActivityForResult...这里2和3的前提是如果父activity中重写了onActivityResult,父Activity的onActivityResult中必须添加super.onActivityResult() 总结起来就是...方法中对于Fragment的startActivityForResult调用已经做了处理。...返回结果 这种情况和上面的是一样的,从上面的源码中我们可以看到,在哪个Fragment发起的startActivityForResult调用,只要父Activity的onActivityResult方法调用了...super.onActivityResult()方法,Fragment中的onActivityResult方法就会回调 其实,说白了就是在Fragment中直接调用startActivityForResult
大家好,又见面了,我是你们的朋友全栈君。...当一个OneActivity跳转到TwoActivity时,TwoActivity关闭时要把数据传回到OneActivity,这个时候就得用到StartActivityForResult。...使用这个方法特别要注意的是:一个Activity中可能包含多个按钮,并调用多个startActivityForResult方法来打开不同的Activity处理业务,当这些新Activity关闭后,系统会调用前面的...Activity的onActivityResult方法。...为了知道该方法是由哪个请求结果所触发的,可利用requestCode标识,为了知道返回的数据来自于那个新的Activity,可利用resultCode标识。
正文: startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish...例如:一个Activity有两个按钮,点击这两个按钮都会打开同一个Activity,不管是那个按钮打开新Activity,当这个新Activity关闭后,系统都会调用前面Activity的onActivityResult...结果码的作用 在一个Activity中,可能会使用startActivityForResult()方法打开多个不同的Activity处理不同的业务,当这些新Activity关闭后,系统都会调用前面Activity...的onActivityResult(int requestCode, int resultCode, Intent data)方法。...为了知道返回的数据来自于哪个新Activity,在onActivityResult()方法中可以这样做(ResultActivity和NewActivity为要打开的新Activity):
设置颜色 在xml中是android:textColor 在Activity中是setTextColor AutoCompleteTextView AutoCompleteTextView为控件自动显示输入文本时出现的提示信息...,requestCode); onActivityResult();//MainActivity onResult(); 接下来只学startActivityForresult(): Intent intent...中创建onActivityResult()方法: 接收返回来的数据 @Override protected void onActivityResult(int requestCode, int resultCode..., Intent data){ super.onActivityResult(requestCode, resultCode, data); } 那么在SecondActivity中创建onResult...中的onActivityResult(): @Override protected void onActivityResult(int requestCode, int resultCode, Intent
只需要检查程序中变量或者 view的 类型就可以 5.java.lang.IndexOutOfBoundsException用非法索引访问数组时抛出的异常 这个在Android中一般在 适配器...6.有点击效果的button 设置样式的方法。 首先是准备好按钮不同状态的图片 然后 在res/drawable中定义selectorBtn.xml的xml文件 startActivityForResult()和onActivityResult()时,会分别用到requestCode和resultCode,有时候极容易将2个参数混淆起来。...startActivityForResult(Intent intent, Int requestCode) intent 传给B的,requestCode >=0就好,随便用于在onActivityResult...intent 继续不解释,传回给A的onActivityResult() onActivityResult(int requestCode, int resultCode, Intent intent
输入一个字的时候,下面的东西能够动态变化,然后你就可以点击listView显示的某行值 然后界面再次回到 fragment里面,或者是跳转到其他的fragment里面, 当时出了一个错误,就是我直接在searchActivity...里面执行了fragment跳转,发现这种是错误的,根本无法跳转, 必须先把结果返回到StartActivity里面,由它分发事务才可以的 所以这里就用了startActivityForResult();...来做, 在StartActivity里面,先跳转到其他的界面: case R.id.publish_request: // 标题栏 发布 按钮的事件触发 startActivityForResult...(new Intent(this, SearchActivity.class),SEARCHREQUST); break; 在onclick里面有这样的事件 然后重载onActivityResult...,而值可以从 searchActivity里面返回,只不过我这里没有返回,因为我只需要知道一个值,而那个值我是放在Constants里面的,用的时候从缓存里面取的 所以这里面不涉及到从activity
因为手机内部的通讯芯片一般同时集成了2G/3G/4G、WIFI和蓝牙,所以蓝牙功能已经是智能手机的标配了。...); startActivityForResult(intent, mOpenCode); 蓝牙权限的选择对话框如下图所示: ?...由于选择弹窗上面可选择“允许”还是“拒绝”,因此代码中要重写onActivityResult函数,在该函数中判断蓝牙权限的选择结果。...只有用户在两部手机都选择了“配对”按钮,才算是双方正式搭配好了。...故而前面第三步的广播接收器得增加过滤绑定状态的变更动作,接收器内部也要补充更新蓝牙设备的绑定状态了。
0,通俗易懂 粗暴的解释Android与蓝牙Ble之间的通信 - android小草 - 博客园 1,Activiy的生命周期 Activity生命周期 2,Android中的onActivityResult...这个requestCode和startActivityForResult中的requestCode相对应。...总结:旧窗体通过startActivityForResult(intent, requestCode)方法的requestCode来标识信息(intent中)传给2个不同的新窗体,信息在新窗体中显示;新窗体在自己的窗体类中用...Android进阶2之Activity之间数据交流(onActivityResult的用法) - 落日小屋 - 博客频道 - CSDN.NET 例子更形象、清晰 总结:调用startActivityForResult...在Service中需要创建一个实现IBinder的内部类(这个内部类不一定在Service中实现,但必须在Service中创建它)。
大家好,又见面了,我是你们的朋友全栈君。 最近在学习安卓的过程中,学到了从相册中选取图片的内容。...setContentView(R.layout.activity_main); Button button = (Button) findViewById(R.id.button);//打开相册按钮...intent.setType("image/*"); startActivityForResult(intent, REQUEST_IMAGE_OPEN...intent.type = "image/*" startActivityForResult(intent, REQUEST_IMAGE_OPEN); } } override fun onActivityResult...本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
演示视频一,准备 android apk的安装,本文用的自带模版是Bottom Navigation Activity,android api 30二,添加必要的权限在AndroidManifest.xml...android.hardware.camera" /> 三,在xml文件中添加必要的组件这里用了一个...Button和ImageView组件四,按钮触发器写在onCreateView函数下面 //按钮触发器 Button button = binding.buttonContinue...= null) { startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO); } }七,处理拍照结果...@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult
前言 上文学问Chat UI(2)分析了消息适配器的实现; 本文主要学习下插件功能如何实现的.并以图片插件功能作为例子详细说明,分析从具体代码入手; 概要 分析策略说明 “+”功能UI布局如何实现?...分析策略 1.从融云提供完整的demo,操作“+”按钮,选择图片发送图片消息; 2.根据1的操作,寻找对应的控件与事件,理清逻辑; 3.从整体把握,看如何实现插件功能; “+”功能UI布局如何实现 从UI...看是两个部分:“+”按钮与扩展面板,点击会触发事件,判断扩展面板状态,未显示则显示扩展面板,显示状态则隐藏扩展面板; 代码上mPluginToggle对象就是那个"+"按钮,它是ImageView的实例...中的插件如何与PluginAdapter关联起来的?...接口对应的方法; public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult
ActivityCompat.requestPermissions(this, per.toArray(p), REQUEST_CODE); } } 2.点击连接按钮...,通过startActivityForResult启动一个蓝牙列表页面,实际上显示为一个dialog public void btnConnect(View view) { startActivityForResult...Activity.RESULT_OK, intent); finish(); } } }; 5.在MainActivity的onActivityResult...中获取mac地址,并通过设备连接管理类DeviceConnFactoryManager进行连接 @Override protected void onActivityResult(int...6.在连接管理类中通过jar包封装的方法进行连接,并通过广播Broadcast把连接状态发送出去 public void openPort() { deviceConnFactoryManagers
大家好,又见面了,我是你们的朋友全栈君。...如果从ActivityB返回时需要ActivityA的特殊行为,则应使用startActivityForResult(Intent intent,int requestCode)而不是startActivity...onActivityResult(int requestCode,int resultCode,Intent intent)来检测ActivityB在ActivityA中的终止: @Override protected...void onActivityResult(int requestCode, int resultCode, Intent intent) { super.onActivityResult(requestCode...resultCode, intent); if (requestCode == REQUEST_CODE) { doRefresh(); // your “refresh” code } } 即使您通过按后退按钮终止
("key2", true); // 开启一个新的activity 并且等待消息返回 startActivityForResult(intent, 0); B: Intent data...@Override protected void onActivityResult(int requestCode, int resultCode, Intent data)...("msg"); mTextView.setText(msg); } 请求码: A有两个按钮,都是跳转到B,B界面处理完返回消息, 就用请求码进行区分,是点击了哪一个按钮跳转到B...,然后 返回A的 startActivityForResult(intent , 请求码); 结果码: B有两个按钮,都是跳回到A,A界面就是通过结果码来进行判断 返回不同的处理信息 setResult...(结果码, data ); 对于消息的处理都是在onActivityResult这个方法中去实现的。
领取专属 10元无门槛券
手把手带您无忧上云