StartActivityForResult的Xamarin.Forms替代方案StartActivityForResult是Android开发中的一个方法,用于启动一个新的Activity,并且可以获取该Activity返回的结果。在Xamarin.Forms中,可以使用MessagingCenter来实现类似的功能。 MessagingCenter是Xamarin.Forms中的一个消息传递机制,可以在不同的页面或组件之间发送和接收消息。通过使...
privateval startActivity=registerForActivityResult(ActivityResultContracts.StartActivityForResult()){//此处是跳转的result回调方法if(it.data!=null&&it.resultCode==Activity.RESULT_OK){it.data?.getStringExtra(NewWordActivity.EXTRA_REPLY)?.let{reply->val word=Word(reply)wordViewModel.insert(word)}}else...
在这些情况下,可能需要使用替代方法,其中一些常见的方法如下: 回调接口:使用回调接口来处理Activity返回的结果。在调用startActivityForResult()方法时,将回调接口传递给被调用的Activity,然后当结果返回时,该Activity将调用该接口中的方法,以返回结果。 EventBus:EventBus是一种流行的开源库,可用于在Android应用程序中简...
在这种模式下,如果新Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建,同时它的onNewIntent方法会被回调,通过此方法的参数我们可以取出当前请求的信息。需要注意的是,这个Activity的onCreate、onStart不会被系统调用,因为它并没有发生改变。如果新Activity的实例已存在但不是位于栈顶,那么新Activity仍然会重新...
setResult(RESULT_OK,newIntent().putExtra("GasItemBean",gasItemBean));finish(); 用google 预定义的Contract 主要是减少了定义Contract类的书写,其他步骤一样,主要代码 //注册协议ActivityResultLauncher<Intent>activityResultLauncher=registerForActivityResult(newActivityResultContracts.StartActivityForResult(),newAc...
startActivityForResult()在使用过程中,还需要与onActivityResult()配对使用,定义大量的requestCode,属实比较麻烦,而现在startActivityForResult()方法已经被谷歌标记为了Deprecated,方法不推荐使用了,谷歌推荐使用Activity ResultsAPI。 首先引入: implementation 'androidx.activity:activity:1.2.0-beta01' ...
startActivityForResult被弃用,而registerForActivityResult在使用上有些不方便,可以使用launchActivityForResult替代。 点击查看registerForActivityResult 依赖 maven { url "https://jitpack.io" } api 'com.gitee.ingxin:activity-launcher:版本号' 点击查看版本号 ...
所以這次來講些簡單一點的封裝,來封裝 Jetpack 的另一個元件——Activity Result API。這是官方用於替代startActivityForResult()和onActivityResult()的。雖然出了有大半年了,但是個人到現在沒看到比較好用的封裝。最初大多數人會用擴充函式進行封裝,而在activity-ktx:1.2.0-beta02版本之後,呼叫註冊方法的時機必須在...
以开启蓝牙为例: privatevalopenBLELauncher=registerForActivityResult(ActivityResultContracts.StartActivityForResult()){result->Log.d("test",":$result")if(result.resultCode==RESULT_OK){}}privatefunturnOnBLE(){valbluetoothManager=requireContext().getSystemService(Context.BLUETOOTH_SERVICE)asBluetoothManage...
1. 采用一种特殊的方式开启Activity startActivityForResult(intent, 0); 2. 在开启的第二个Activity里面设置数据 Intent data = new Intent(); data.putExtra("content", content); setResult(0, data); 3. 记得关闭新开启的第二个activity finish(); ...