2012-05-23 53 views
2

我正在使用AsyncTask來下載文件。在那裏我實現了進步:關於旋轉的進度不見android

//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(); 
    } 
} 

一切工作都很好的肖像和風景。對於通知該文件已下載,我正在使用界面。

所以錯誤是當我開始下載我的文件在縱向或橫向,雖然沒有完成我旋轉設備,然後進展消失和回調火災例外,因爲沒有去哪裏。

當我旋轉設備我的活動重新創建,所以如何正確地做到這一點。我需要限制下載時啓動用戶無法旋轉設備,那麼如何做到這一點。

或者有解決方案嗎?

+0

放機器人:configChanges =「方向」,在該活動 – Akram

回答

1

如果您想在下載時限制方向,然後在開始下載之前使用此代碼。這將限制用戶設備方向。

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); 

希望它能幫助你。

+0

清單文件如何在一個延伸的AsyncTask類setRequestedOrientation? – Streetboy

+0

使用context.setRequestedOrientation。上下文是您正在顯示對話的活動的上下文。 –

+0

我試過了,但這不起作用。編譯器建議投射,當它仍然顯示錯誤 – Streetboy

1

我需要限制下載時啓動用戶不能 旋轉設備,那麼該怎麼做。

因爲在顯示進度對話框之前,您需要修復設備方向。

onPreExecute(){ 
..... 
..... 
Activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
//in case activity started in landscape mode 
progressDialog.show(); 
} 

一旦你完成下載..你可以恢復到正常的方向更改。

onPostExecute(){ 
Activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR); 
progressDialog.dismiss(); 
} 

還有一個解決方案,我會建議.. 不要限制方向的活動,而不是你可以在清單文件中添加「configChanges =」方向「」屬性,請檢查progressDialog對象!空在onPreExecute()方法和setProgress(進度)如果它不爲null。

onPreExecute(){ 
if(progressDialog!=null){ 
    progressDialog.setProgress(progress); 
} 
else{ 
...... 
...... 
} 
}