在Android开发中,如何在依赖的module中调用被依赖module中的Activity

1.
clipboard.png这里有两个module,app依赖orcidcardlibrary,但是我想在orcidcardlibrary的activity里传值传到回到app里的activity而不是返回到其他在orcidcardlibrary的activity。

  1. 这里是我想传值的代码
    Intent intent = new Intent("kernal.idcard.ShowResultActivity");
    intent.putExtra("recogResult", recogResultString);
    if (devcode != null){

    intent.putExtra("devcode", devcode);
    intent.putExtra("fullPagePath", picPathString1);
    intent.putExtra("cutPagePath", picPathString);
    intent.putExtra("VehicleLicenseflag", VehicleLicenseflag);
    startActivity(intent);

    }
    3.尝试过以下方法

隐式调用
Intent intent = new Intent("com.example.administrator.sdktest.ACTION_RESULT");
intent.putExtra("recogResult", recogResultString);
结果:报错
java.lang.RuntimeException: Only one Looper may be created per thread

在app使用startActivityForResult启动orc module里的activity

结果:不理我,还是返回到orc module里其他的activity

阅读 14.3k
7 个回答

主模块依赖子模块,编译的时候主模块可以拿到子模块中的类,但是子模块不能拿到主模块中的类。
举个例子:
Aclass 位于 A 模块,BClass 位于 B 模块。A 模块添加了B 模块的依赖,就是在A 模块的build.gradle文件中添加了对 B 模块的依赖。而 B 模块是没有添加 A 模块的依赖的。
则现在在 A 模块中,是可以拿到 BClass 的,但是在 B 模块中拿不到 AClass

回到你的问题上来,你现在是想在依赖的module 中拿到app module 中的Activity,这是拿不到的。
提供给你个思路:

  1. 如果是想做跳转的话可以使用路由机制,推荐一个框架 ARouter
  2. 如果是想传值的话使用 事件总线框架,或者用广播

startActivityForResult

新手上路,请多包涵

方法很多哦,envntbus,广播,接口回调,都是可以的

如果只是返回值,我想上面已经提供了很多方式了。如果你是想在子model里启动主工程的界面,可以尝试使用路由

"在app使用startActivityForResult启动orc module里的activity

结果:不理我,还是返回到orc module里其他的activity"
你的这个是什么意思?你是怎么控制的?

传个YourActivity.class过去

你这个是调用证件识别吧,我也用到了这个。
我用的是startActivityForResult,先跳到com.kernal.passportreader.sdk.MainActivity,
然后在启动拍照识别或选择照片识别,识别后的结果会在com.kernal.passportreader.sdk.MainActivity的onActivityResult方法里,然后你自己再将结果返回给你启动的Activity。
他们的项目能跑起来,但是你要用,得先看懂里面的逻辑,然后再做相应的改造。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题