java - android 旋转时进度消失

标签 java android

我正在使用 AsyncTask 下载文件。我在那里实现了进度:

//Updating progress dialog
protected void onProgressUpdate(Integer... changed) {
    progressDialog.setProgress(changed[0]);
}

//STARTED 
@Override
protected void onPreExecute() {

    try {
        progressDialog = new ProgressDialog(context);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setMessage(context
                .getString(R.string.message_loading));
        progressDialog.setCancelable(false);
        progressDialog.show();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
}

纵向和横向一切正常。为了通知文件已下载,我正在使用界面。

错误的是,当我开始以纵向或横向方式下载文件时,虽然没有完成,但我旋转设备,然后进度消失并回调触发异常,因为无处可去。

当我旋转设备时,我的 Activity 被重新创建,那么如何正确执行此操作。我需要限制下载开始时用户无法旋转设备,那么如何做到这一点。

或者有解决方案吗?

最佳答案

如果您想在下载时限制方向,请在开始下载之前使用此代码。这将限制用户的设备方向。

int current_orientation = getResources().getConfiguration().orientation;
if (current_orientation == Configuration.ORIENTATION_LANDSCAPE) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

您可以在完成方向后使用此代码,允许用户再次旋转设备。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);

希望对您有帮助。

关于java - android 旋转时进度消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10713890/

相关文章:

java - 如何向现有的空 JTable 添加列/行?

java - 在线编译器上找不到 java 类名错误

java - 模块从 IntelliJ 的项目资源管理器中消失

android - 如何在 RecyclerView.Adapter 中添加自定义 View

java - 问题,如何修复android中从URL获取JSON?,Onclicklistener?异步任务?执行后?

java - 从 SQLite DB 表获取最新记录时出现问题

java - ListViewAdapter extends CursorAdapter 滚动时顺序困惑

java - 如果两端之和相等,求数组中的中间索引?

java - 如果重新创建 Activity ,Android显示对话框会导致非法状态异常

java - Android 与 iOS 中 View 的位置?