2011-09-19 62 views
0
時控制標題不確定的進度欄

所以我試着去使用一個不確定的進度在我的自定義標題頭顯示出任何背景的工作。眼下UM使用的AsyncTask顯示和使用前置和後置方法隱藏進度:如何按後退按鈕將以前的活動

下面是一個包含一切類:

公共抽象類QuadrosMobileActivity延伸活動{

protected static volatile ProgressBar progressHeader = null; 
protected static int progressBarstate=ProgressBar.INVISIBLE; 

//this method will launch respejcting oncreate logic for each activity 
public abstract void initActivity(); 


public int getProgressBarstate(){ 

    return progressBarstate; 
} 


public void setProgressBarstate(int state){ 

    progressBarstate=state; 
} 



@Override 
protected void onCreate(Bundle savedInstanceState) { 


    //set theme first for showing correct header 
    setTheme(getThemeId()); 

    super.onCreate(savedInstanceState); 

    //in case the screen will have a header 
    if(getThemeId()!=R.style.CustomThemeNoHeader){ 

     requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); 

     setContentView(getLayoutId()); 

     getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_window_title); 

     //set text header 
     ((TextView)findViewById(R.id.header_title)).setText(getWindowTitle()); 

     progressHeader= (ProgressBar) findViewById(R.id.progresspinner); 


     progressHeader.setVisibility(getProgressBarstate()); 

    }else { 
     setContentView(getLayoutId()); 
    } 
    //execute activity logic 
    initActivity(); 
} 

private class ProgressBarThread extends AsyncTask<Void, Void, Void>{ 
     @Override 
    protected void onPreExecute() { 
     progressHeader.setVisibility(ProgressBar.VISIBLE); 
     setProgressBarstate(ProgressBar.VISIBLE); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     updateResultsInUi(); 
     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     progressHeader.setVisibility(View.INVISIBLE); 
     setProgressBarstate(View.INVISIBLE); 
    } 
} 

} 這是我的主要活動類,其中我的所有屏幕子活動都從中延伸。 我遇到的問題是,如果我啓動了asynctask,進度條變得可見(全部在活動A中),並且如果我轉到另一個活動(B)時發生這種情況,進度條仍然正確顯示,並在後臺工作結束時隱藏,所有正確的行爲。但如果我按下後退按鈕,前面的活動(A)顯示進度欄可見。 這裏有一個簡單的示意圖:

開始活動答:

  1. 推出的AsyncTask
  2. 節目進度
  3. 做後臺工作

去活動B:

  1. 進度仍顯示
  2. 結束後臺工作
  3. 皮進度*正確的行爲

回到活動答:

  1. 進度是可見*不正確的行爲 ...

我想這對的onResume方法:

@Override 
protected void onResume() { 
    super.onResume(); 
    if(getThemeId()!=R.style.CustomThemeNoHeader){ 
     System.out.println("visible: " + ProgressBar.VISIBLE+" : " + getProgressBarstate()); 
     progressHeader.setVisibility(getProgressBarstate()); 

    }; 

} 

但無濟於事,我真的能使用的onResume改變進度狀態下按下後退按鈕時???

+0

好吧只是試圖在onRestart方法和改變的標題文字作品,但沒有進度條的狀態??? \t} – Maxrunner

回答

0

我試過的方法:

@Override 
public void onRestart() 
{ 
    super.onRestart(); 
    if (getThemeId() != R.style.CustomThemeNoHeader) 
    { 
    Toast.makeText(this, "visible(0): " + ProgressBar.VISIBLE+" : Current :" + getProgressBarstate(),Toast.LENGTH_LONG).show(); 

    // doesnt work 
    QuadrosMobileActivity.progressHeader.setVisibility(getProgressBarstate()); 

    // works 
    ((TextView)findViewById(R.id.header_title)).setText("Tretas"); 
    } 
}