Activity 开启相机后转为风景
Activity turns to landscape after opening the camera
当我打开相机时,我的 Activity 转为横向一秒钟,然后又转回纵向,之后我的 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);
}
}
}
在 manifest.xml 中输出一个标签 android:screenOrientation="portrait"
用于activity 你想要的纵向模式
因此您的代码将如下所示:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait" />
您的设备运行不佳,但您不应该绝望。如果你添加一个 "proxy" activity 来隐藏列表并负责启动相机意图和处理结果,你的主要 activity 将受到保护免受不必要的旋转。
另一方面,空列表视图可能仍会再次出现,如果不在您的设备上,那么在您客户的设备上,尤其是在内存较小或相机应用程序较差的设备上。
您应该在必要时保存和恢复您的 activity 状态,如经典 answer 中所述。
当我打开相机时,我的 Activity 转为横向一秒钟,然后又转回纵向,之后我的 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);
}
}
}
在 manifest.xml 中输出一个标签 android:screenOrientation="portrait"
用于activity 你想要的纵向模式
因此您的代码将如下所示:
<activity
android:name=".MainActivity"
android:screenOrientation="portrait" />
您的设备运行不佳,但您不应该绝望。如果你添加一个 "proxy" activity 来隐藏列表并负责启动相机意图和处理结果,你的主要 activity 将受到保护免受不必要的旋转。
另一方面,空列表视图可能仍会再次出现,如果不在您的设备上,那么在您客户的设备上,尤其是在内存较小或相机应用程序较差的设备上。
您应该在必要时保存和恢复您的 activity 状态,如经典 answer 中所述。