2011-09-19 35 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"); 
    } 
}