java - OnActivityResult 与 OnClicklistener 的放置

标签 java android android-activity onclicklistener

我在我的项目中实现了第 3 方相机扫描应用程序

我有一个适配器,可以扩展 View 保持器,这样我就可以拥有自定义布局

在 View 中我有一个按钮

当我创建 View 时,我将 OnclickListener 添加到我想要使其可点击的图像中

我希望这个 OnclickListener 调用相机,但我需要调用 startActivityForResult

以这种方式调用时,我对 onActivityResult 的位置感到困惑。

我当前的尝试是创建一个单独的类(scan_activity)来扩展 Activity ,但我无法让 onclicklistener 启动该类

然后我尝试在 setOnClickListener 中声明它,您可以猜到这也失败了。

我猜对类的调用是前进的方向。我确定它是一个简单的解决方案,但我没有看到它

请帮忙

提前致谢

    imgCamera.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            Intent intent = new Intent(context, ScanActivity.class);
            intent.putExtra(ScanConstants.OPEN_INTENT_PREFERENCE, 1);

            ((Activity) context).startActivityForResult(intent,99);
        }
                                 }
   );

和类(class)

imgCamera.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
              new ScanActivity
            }
                                     }
       );

最佳答案

第一个选项应该有效。您创建一个 Intent 对象,并将 Activity 组件指定为参数。 Android 将为您创建一个 Activity 对象,因此,切勿手动执行此操作。 Android 应该管理 Activity 的生命周期。

通过启动 Activity 获取结果,您可以告诉 Android 当 ScanActivity 关闭时,它应该在您的第一个 Activity 上使用请求代码 99 调用 onActivityResult 回调。

在 Activity 中处理 onActivityResult:

@Override
public void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (requestCode == 99) {
        // handle your result here
    }
}

关于java - OnActivityResult 与 OnClicklistener 的放置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417148/

相关文章:

Android NFC 读取标签问题。每次收到数据时 Activity 都会启动

安卓:改变屏幕

java - 将对象 arrayList 对象转换为 Integer

java - Weblogic 管理异常

java - 索引意外设置为 3040

java - JSTL - 将错误字符串转换为长整型

android - 动态地向 Activity 添加 Intent

java - Android Firestore 将限制为每个用户 1 票

android - HeifDecoderImpl 导致 'decStrong() called too many times'

android - 不同 Activity 中的相同抽屉导航