我已经搜索了这个问题的解决方案但没有找到任何东西。问题是我创建了一个活动,我希望这可以在用户显示对话框时更改屏幕的方向。活动已从纵向方向开始,该方向在 AndroidManifest.xml 中定义为在用户旋转屏幕时无法更改,它仅在用户按下按钮时更改方向以显示对话框。但是当这种情况发生时,活动会改变方向,但一旦改变它就会关闭。我检查了logcat,但没有抛出任何异常。
这样我就在 AndroidManifest.xml 中定义了我的活动:
<activity
android:name=".ui.BarCodeActivity"
android:label="@string/title_activity_barcode"
android:screenOrientation="portrait" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.MainActivity" />
</activity>
这是我用来改变当时屏幕方向的代码:
@Override
protected void onSaveInstanceState(Bundle state) {
super.onSaveInstanceState(state);
Log.e(TAG, "onSave startDialog: " + startDialog);
state.putBoolean("startDialog", startDialog);
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle state) {
startDialog = state.getBoolean("startDialog", false);
Log.e(TAG, "onRestore startDialog: " + startDialog);
if (startDialog) {
showDialog();
}
}
private void showDialog() {
Log.e(TAG, "creating dialog");
Dialog barcodeDialog = new Dialog(BarCodeActivity.this);
barcodeDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
dialogInterface.dismiss();
startDialog = false;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
barcodeDialog.setContentView(R.layout.code_dialog);
barcodeDialog.setTitle("Scan barcode");
ImageView barcode = (ImageView) barcodeDialog.findViewById(R.id.dialog_barcode);
barcode.setImageDrawable(barcodeDrawable);
TextView codeView = (TextView) barcodeDialog.findViewById(R.id.dialog_code);
codeView.setText(code);
/*barcodeDialog.show();*/
}
当活动再次开始然后关闭时,我已经看到在logcat输出奇怪,如果不是你会有东西看,我一直在研究,但我没有运气解决方案。这是输出:
08-01 19:21:21.600 31521-31521/com.my.app W/ResourceType﹕ Failure getting entry for 0x7f090058 (t=8 e=88) in package 0 (error -75)
08-01 19:21:21.600 31521-31521/com.my.app W/ResourceType﹕ Failure getting entry for 0x7f090058 (t=8 e=88) in package 0 (error -75)
08-01 19:21:21.610 31521-31521/com.my.app D/not﹕ got -1
08-01 19:21:21.610 31521-31521/com.my.app D/not﹕ got -1
08-01 19:21:21.620 31521-31521/com.my.app D/not﹕ got -1
08-01 19:21:21.630 31521-31521/com.my.app D/not﹕ got -1
错误是什么?
如果有帮助我将Android Studio更新为1.3版本。
答案 0 :(得分:0)
尝试更改
win32com.dll
到
<activity
android:name=".ui.BarCodeActivity"
android:label="@string/title_activity_barcode"
android:screenOrientation="portrait">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.MainActivity" />
</activity>
并在您的活动中使用此代码进行测试。
<activity
android:name=".ui.BarCodeActivity"
android:label="@string/title_activity_barcode"
android:screenOrientation="portrait"
android:configChanges="keyboardHidden|orientation">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.MainActivity" />
</activity>
}
答案 1 :(得分:0)
我知道这已经过时但是当你使用configChanges时,如果你支持所有版本的android else take a look at this documentation,你必须定义如下所示的orientation和screensize。
因此,更改 android:configChanges =&#34; keyboardHidden | orientation&#34;
到
<强>机器人:configChanges =&#34;取向|屏幕尺寸| keyboardHidden&#34; 强>
它应该有效,因为我们在我们的应用程序中使用它。
希望,这有助于某人。