Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在MVP项目中正确使用onActivityResult_Android_Onactivityresult_Android Mvp - Fatal编程技术网

Android 在MVP项目中正确使用onActivityResult

Android 在MVP项目中正确使用onActivityResult,android,onactivityresult,android-mvp,Android,Onactivityresult,Android Mvp,我尝试在我的项目中使用MVP,但我遇到了一些问题 比如我有 MyPresenter presenter; MyFragment view; 在视图中,我有名为“open barcode scan”(打开条形码扫描)的按钮,它是如下所示的打开条形码扫描活动: IntentIntegrator.forSupportFragment(this).initiateScan() 为什么必须校准此代码查看或演示者 1视图实现: scanButton.setOnClickListener(view -&g

我尝试在我的项目中使用MVP,但我遇到了一些问题

比如我有

MyPresenter presenter;
MyFragment view;
在视图中,我有名为“open barcode scan”(打开条形码扫描)的
按钮,它是如下所示的打开条形码扫描活动:

IntentIntegrator.forSupportFragment(this).initiateScan()
为什么必须校准此代码<代码>查看
演示者

1视图实现:

scanButton.setOnClickListener(view -> IntentIntegrator.forSupportFragment(this).initiateScan());
scanButton.setOnClickListener(view -> presenter.openScan());
2演示者实现:

scanButton.setOnClickListener(view -> IntentIntegrator.forSupportFragment(this).initiateScan());
scanButton.setOnClickListener(view -> presenter.openScan());
下一个问题-如何处理ActivityResult的
?怎么做

比如说

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
 switch(requestCode){
  case 
  ...
  case 
  ...
  case 
//it is logic
}
编辑

单向

双向


演示者
充当
视图
模型
之间的桥梁或中间人,因此必须在视图上调用它

onActivityResult
将与
片段上的内容相同。然后,如果需要保存扫描结果,则需要调用
演示者

演示者通常承载与特定功能关联的业务逻辑,相应的视图处理Android UI工作。这个观点几乎没有逻辑;它将演示者的命令转换为UI操作,并侦听用户操作,然后将这些操作传递给演示者

参考:


您可能会弄错,
onActivityResult
是业务逻辑所在的位置,不是。这就是为什么当您得到结果时需要将其传递给演示者的原因,这样演示者将处理(业务逻辑)它,然后将其交给您的存储库保存它。

是的,我也会这样做。问题还在于从onActivityResult向演示者传输什么内容?若我传递3个参数int-requestCode、int-resultCode,那个么意图数据展示者将了解意图类(android.content),但我认为展示者不必了解android框架类。如果我以片段的形式处理数据,这意味着我实现了逻辑。处理请求代码,结果代码不算作逻辑,因为您只需要获取实际数据并将其传递给演示者。onActivityResult中的代码是一种好方法吗?字符串[]cardData=result.getContents().split(“”);makePay(cardData,basketAdapter.getData());我想你应该传递
结果。getContents()
,然后在
演示者上拆分它。
@ip696我想知道你最后对
onActivityResult()的问题做了什么?