当我打开相机时,我的活动会转动一秒钟而不是回到肖像,之后我的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);
}
}
}
答案 0 :(得分:1)
您的设备表现不佳,但您不应该绝望。如果您添加"代理"将隐藏列表并负责启动摄像头意图和处理结果的活动,将保护您的主要活动免受不必要的轮换。
另一方面,空列表视图可能仍会重新出现,如果不在您的设备上,则可能会出现在客户的设备上,尤其是在内存较小或相机应用程序不良的设备上。
您应该在必要时保存并恢复您的活动状态,如此经典answer中所述。
答案 1 :(得分:0)
将一个标签android:screenOrientation="portrait"
放在manifest.xml中,以便在potrait模式下进行所需的活动
所以你的代码看起来像是:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait" />