【发布时间】:2018-06-13 12:19:23
【问题描述】:
当我打开相机时,我的 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);
}
}
}
【问题讨论】:
-
在
AndroidManifest.xml文件android:screenOrientation="portrait"中将此标签添加到您的活动(您希望它始终处于纵向模式的活动)中 -
它不起作用。它只转了一秒钟就变成了横向,然后又变成了纵向
-
在你的活动的 AndroidManifest 中添加这个 -android:configChanges="orientation|screenSize"
-
旋转后
ListView数据为空的原因很可能是数据和视图紧密耦合。考虑使用架构来解耦数据和视图(例如 MVP、MVVM 等),或在配置更改之间传递数据(例如使用onSaveInstanceState)
标签: android android-layout listview android-camera-intent