2012-03-19 15 views
0

を表示しません:ユーザーがログインをクリックしたときにのProgressBarスピナーは、私がプログレスバーのスピナーに問題がある

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."); 
} 

はこれが実行されます。 Spinはグローバルプログレスバー変数です。以下は、スピンナを処理するために使用される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

+0

なぜUIを管理するためにAsyncTaskを使用しているのか不思議です。 –

+1

私は実際にこれを取得していません、あなたはAsyncTaskを呼び出してonPostExecuteで非表示にする前にスピナーを表示する必要があります。スピナーがView.GONEのレイアウトから完全に削除されるはずです – bbedward

答えて

0

あなたはAsyncTaskを作成する前に、目に見えるにあなたのスピナーを設定し、onPostExecuteでそれを隠し、何かのようにする必要があります:

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

myAsyncTask:

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