2012-03-19 155 views
0

我有一個進度微調的一個問題:進度微調不顯示

ProgressBarSpinner spinner = new ProgressBarSpinner(); 
spinner.execute(Spin); 

Login LoginUser = new Login(); 
if(LoginUser.LoginUser(UserNameValue.getText().toString(), PasswordValue.getText().toString())) { 
    MessageBox("Login information", "You've been successfully logged in, press OK to continue."); 
    Document XMLInfo = null; 
    Passphrase = PasswordValue.getText().toString(); 
    try { 
     XMLInfo = XMLfromString(LoginUser.ProfileXML); 
     XML_ProfileParser(XMLInfo); 
     TickerString = FillProfileSlider(XMLInfo);    
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    Spin.setVisibility(ProgressBar.GONE); 

    setContentView(R.layout.profile); 

    TextView ProfileTicker = (TextView)findViewById(R.id.ProfileTicker); 
    TextView UserInformation = (TextView)findViewById(R.id.NameInfo); 
    TextView MoneyLabel = (TextView)findViewById(R.id.MoneyInfo); 

    UserInformation.setText(ProfileInfo.get("FirstName") + " " + ProfileInfo.get("LastName")); 
    MoneyLabel.setText(ProfileInfo.get("Money") + " Kr"); 

    if(Integer.parseInt(ProfileInfo.get("Messages")) >= 1) { 
     ImageView MessageImage = (ImageView)findViewById(R.id.MailImage); 
     MessageImage.setOnClickListener(ImageListener); 
     MessageImage.setVisibility(ImageView.VISIBLE); 
    } 

    ProfileTicker.setText(Html.fromHtml(TickerString)); 
} 
else { 
    Spin.setVisibility(ProgressBar.GONE); 
    MessageBox("Login information", "The submitted login information seems to be invalid."); 
} 

當用戶點擊登錄該被執行。自旋是一個全局的progressbar變量。以下是用於處理微調器的Async類。

private class ProgressBarSpinner extends AsyncTask<ProgressBar, Integer, ProgressBar> 
{ 

    protected ProgressBar doInBackground(ProgressBar...Spinner) { 
     return Spinner[0]; 
    } 

    protected void onProgressUpdate(Integer... progress) { 

    } 

    protected void onPostExecute(ProgressBar Spinner) { 
     Spinner.setVisibility(ProgressBar.VISIBLE); 
     Spinner.showContextMenu(); 
    } 
} 

的問題:如果我嘗試登錄授權的微調不會被顯示在所有後寫

Spin.setVisibility(ProgressBar.GONE); 

。但是,如果我刪除ProgressBar.Gone部分,則將顯示微調框。 但是,如果該部分存在,看起來應用程序在它繼續(掛起)之前(記錄用戶或顯示錯誤消息,告訴用戶名或密碼錯誤)。

問題是什麼?

我知道確保登錄沒有那麼快,以至於在微調設置爲GONE之前,微調沒有時間顯示。

+0

顯示所有你的代碼。微調不能既是陣列又是微調。 – Snicolas 2012-03-19 19:16:58

+0

我很好奇你爲什麼使用AsyncTask來管理UI。 – 2012-03-19 19:17:14

+1

我真的不明白這一點,你應該在調用你的AsyncTask並將它隱藏在onPostExecute中之前顯示微調器,我不確定你的問題是微調器應該完全從View.GONE中移除 – bbedward 2012-03-19 19:20:45

回答

0

您需要創建的AsyncTask之前,你的微調器設置爲可見的,它藏在onPostExecute,是這樣的:

mySpinner.setVisibility(View.VISIBLE); 
myAsyncTask.Execute(); // etc, etc 

myAsyncTask:

protected void onPostExecute(ProgressBar Spinner) { 
    Spinner.setVisibility(View.GONE); 
}