我有一个对话框片段,在我的应用程序执行任务时显示。
我取消了正在调用的活动onDestroy()
方法上执行的任务。
如果用户在显示弹出窗口时旋转,则android会破坏活动,然后重新绘制它。所以我告诉它取消onDestroy()
方法中的任务。然后它停止执行任务,弹出窗口停留在那里。因为它通常只在任务完成时被删除。
我知道这可能不是最好的方法,但我认为这将是我的问题的快速解决方案,它不会导致任何其他问题(我知道)。
我想在显示弹出窗口之前禁用我的应用程序的旋转,然后我想在对话框被分析时重新启用它。
我如何以程序化方式执行此操作?
像这样:setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
?
我会在哪里做?在对话框的onCreate()
中?或者在我从活动中调用对话框之前?
答案 0 :(得分:0)
尝试这样做,并告诉你的经验! 就在你调用onDestroy()的实现时使用
onDestroy(){
OrientationListener foo = new OrientationListener(this.getContext());
foo.disable();
}
我认为如果这不起作用就近了。无论如何你应该看一看 this。
我希望这会对你有所帮助!
答案 1 :(得分:0)
尝试为对话框实现onDismiss和onShow侦听器并处理方向。例如,做这样的事情:
public class MyActivity extends Activity
implements DialogInterface.OnDismissListener,DialogInterface.OnShowListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AlertDialog alertDialog = new
AlertDialog.Builder(MainActivity.this).create();
alertDialog.setTitle("Alert");
alertDialog.setMessage("Alert message to be shown");
alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setOnShowListener(this);
alertDialog.setOnDismissListener(this);
alertDialog.show();
}
@Override
public void onShow(DialogInterface dialog) {
final int screenOrientation = ((WindowManager) getbaseContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getOrientation();
switch (screenOrientation){
case Surface.ROTATION_180:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
break;
case Surface.ROTATION_270:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
break;
case Surface.ROTATION_0:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
case Surface.ROTATION_90:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
}
}
@Override
public void onDismiss(DialogInterface dialog) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
}
}
我希望这对某人有所帮助。