2011-12-02 10 views
0

私はアンドロイドアプリで作業しています。私はインテント3にリダイレクトするインテント2を持っていて、時間をかけてテーブルをロードし、 。Androidのインテントの「読み込み:プログレスバー」をデータロードまで

多くのデータがある場合、データロードを取得するのにかなり時間がかかることがあり、空白の画面が表示される時間が増えます。

データが読み込まれるまでローディングバーを表示します。

データが表示されていない場合のみProgrssBarを表示できますか?

答えて

2

おそらくあなたの最善の策は、あなたの「intent3」でAsyncTaskを使用することです:

あなたはこのようにそれを行うことができます:

private class performBackgroundTask extends AsyncTask <Void, Void, Void> 
     { 
       private ProgressDialog Dialog = new ProgressDialog(ClassName.this); 

       protected void onPreExecute() 
       { 
        Dialog.setMessage("Please wait..."); 
        Dialog.show(); 
       } 

       protected void onPostExecute(Void unused)  
       { 
        try 
        { 
         if(Dialog.isShowing()) 
         { 
          Dialog.dismiss(); 
         } 
           // do your Display and data setting operation here 
        } 
        catch(Exception e) 
        { 

        } 

      @Override 
     protected Void doInBackground(Void... params) 
      { 
      // Do your background data fetching here 
       return null; 
     } 
     } 
+0

私はすでに活動クラスを拡張していますように私はAsyncTaskを拡張することはできません。 – typedefcoder2

+1

これは内部クラスであると考えられているため、プライベートです。 onCreateでこれを呼び出すことができます。 – Andrei

0

あなたはおそらく、あなたが開いたときのonCreateでAsyncTaskを実行する必要があります新しいアクティビティは、asynctaskの構造は(グーグルdocから取られた)このようになる、あなたはプログレスバーをincreamentしたい場合は、onProgressUpdateを実装し、doInBackgroundメソッドでpublishProgressを呼び出す必要があることに気づく

private class DownloadFilesTask extends AsyncTask<Void, Integer, Void> { 

protected void onPreExecute() 
{ 
    // show your progress bar 
} 

protected Void doInBackground(Void... params) { 
    // do your work and publish the progress 
    publishProgress(progress); 
} 

protected void onProgressUpdate(Integer... progress) { 
    setProgressPercent(progress[0]); 
} 

protected void onPostExecute(Void result) { 
    //dismiss your progress bar 
} 

} 

このコードは単なる例に過ぎず、ロジック/コードに合わせる必要があります。

チェックアウト、このシンプルかつ完全なexample

関連する問題