意图startActivity的奇怪问题导致我的扫描仪无法正常工作

Kew*_*sen 9 java android barcode-scanner android-activity

所以,在我完成扫描仪活动之后

      btn_take_photo.setOnClickListener(new FloatingActionButton.OnClickListener() {
        @Override
        public void onClick(View view) {
            String carde = cardnumberbox.getText().toString().trim();
            if (carde.matches("")) {
                Toast.makeText(getApplicationContext(), getString(R.string.Skan_Udfyld_Kort_Nummer), Toast.LENGTH_SHORT).show();
                cardnumberbox.requestFocus();
                return;
            }
            Intent i = new Intent(ScanActivity.this, CameraActivity.class);
            i.putExtra("EXTRA_SESSION_ID", carde);
            startActivity(i);

        }
    });
Run Code Online (Sandbox Code Playgroud)

去我的凸轮活动所以我可以拍一些照片然后回去

    public void btn_aprove2(View view) {
    Intent i = new Intent(CameraActivity.this, ScanActivity.class);
    String counts = count.getText().toString().trim();
    i.putExtra("EXTRA_SESSION_IDs", counts);
    String carde = cardnumberbox2.getText().toString().trim();
    i.putExtra("EXTRA_SESSION_ID", carde);
    startActivity(i);
    finish();
Run Code Online (Sandbox Code Playgroud)

再次扫描一下.我的扫描仪无法正常工作,但是如果我按下后退按钮它会再次返回到扫描活动而不是我的菜单,所以看起来扫描活动正在运行两次,其中只有一个功能正常但是在这里它让我感到困惑

因为如果不按下btn_aprove2按钮而只是使用后退按钮我会得到完全相同的问题,但在这里我的scanneractivity没有运行两次,因为当我按下后退按钮它只是带我回到菜单

这个问题的视频

通过从清单中移除我的屏幕方向(所以我可以旋转它)我的扫描仪现在可以工作,但只有当我第一次旋转到横向并将其旋转回potrait

我在日志中看到它只是在旋转时调用oncreate并且仅在恢复时暂停并按下按钮(startactivity/finnish)

我完全迷失了如何让它发挥作用.

在github上使用api演示和wiki中的文档以及正在使用的thoose类

xxt*_*axx 4

如果您只是跳转到 Camera 活动来获取一些数据,我建议您启动该活动以获取结果 (startActivityForResult),而根本不完成 Scanner 活动。这将为您提供正确的工作后退堆栈(使用后退按钮从相机返回到扫描仪)。

除此之外,你为什么要使用 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);?您正在开始一项新活动并完成旧活动。我不明白为什么真的需要这个标志。您的清单中有什么android:launchMode?您确定您知道FLAG_ACTIVITY_NEW_TASK正在做什么并且这就是您想要的吗?

无论如何,从您告诉我们的情况来看,您的示例确实应该startActivityForResult()在不调用的情况下使用finish()

  1. 在某些活动上按菜单按钮
  2. 启动相机并做某事
  3. 按某个按钮启动扫描仪
  4. 扫描某些内容并根据结果完成扫描(或通过单击“返回”取消扫描)
  5. 在相机中检索扫描仪的结果并对其执行某些操作,或者在扫描仪取消时继续之前的工作流程
  6. 完成工作流程后,完成相机,以便您最终进入启动相机的活动