打开相机后,活动变为横向

时间:2018-06-13 12:19:23

标签: android android-layout listview android-camera-intent

当我打开相机时,我的活动会转动一秒钟而不是回到肖像,之后我的ListView中的所有数据都消失了。你知道怎么解决这个问题吗?

我尝试使用SCREEN_ORIENTATION_PORTRAIT,但它对我不起作用。

这是我的代码。

private void onClick() {

        scanBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);

                integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES);
                integrator.setPrompt("Scan Code");
                integrator.setBeepEnabled(false);
                integrator.setCameraId(0);
                integrator.setBarcodeImageEnabled(false);
                integrator.initiateScan();
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);


        if (result != null) {

            scandata = result.getContents();
            scanFormat = result.getFormatName();

            if (scandata != null) {
                dta.add("Data: " + scandata + "     Format: " + scanFormat);

            }
        }



    }

2 个答案:

答案 0 :(得分:1)

您的设备表现不佳,但您不应该绝望。如果您添加"代理"将隐藏列表并负责启动摄像头意图和处理结果的活动,将保护您的主要活动免受不必要的轮换。

另一方面,空列表视图可能仍会重新出现,如果不在您的设备上,则可能会出现在客户的设备上,尤其是在内存较小或相机应用程序不良的设备上。

您应该在必要时保存并恢复您的活动状态,如此经典answer中所述。

答案 1 :(得分:0)

将一个标签android:screenOrientation="portrait"放在manifest.xml中,以便在potrait模式下进行所需的活动

所以你的代码看起来像是:

 <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" />