2013-12-12 63 views
1

我有一個擴展視圖尋呼機的應用程序。查看傳呼機的每個選項卡都從在線數據庫獲得填充,但是我在加載時遇到了一個小問題:-)加載數據時不暫停片段中的活動

我在活動第一次啓動時使用Asynctask,但這確實破壞了用戶體驗,因爲我希望它更多流暢和互動。 因此,在尋找新的更新的Zedge應用程序後,我想對我的片段做同樣的事情。

此圖片說明了一切:

http://i.stack.imgur.com/ryCVc.png

他們裝載平穩,我想我的太過了,所以我該怎麼辦呢?

基本上:我希望進度對話框在片段內,並在加載完成時消失。我知道我們知道我可以通過修改可見性來做到這一點,但是我怎樣才能將我的在線數據庫中的數據加載到脫機數據庫,而用戶仍然可以在選項卡之間滑動。

+0

你是什麼意思'它破壞用戶體驗'?你的意思是什麼? – Zeeshan

+0

我的意思是我想要加載到片段中,就像對話框在屏幕截圖中一樣,但我不想讓加載暫停活動,因爲用戶可以在加載時在標籤之間滑動 – Fringo

回答

1

這應該是你想要什麼......

class AsyncGet extends AsyncTask<Void,Void,Void> 
     { 

     private ProgressDialog progressDialog = new ProgressDialog(getSherlockActivity()); 

     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      progressDialog.setMessage("Getting Information..."); 
      progressDialog.show(); 
      progressDialog.setOnCancelListener(new OnCancelListener() { 
     @Override 
      public void onCancel(DialogInterface arg0) { 
      AsyncGet.this.cancel(true); 
     } 
      }); 

     } 

     @Override 
     protected Void doInBackground(Void... arg0) { 
      // TODO Auto-generated method stub 
      //your stuff here 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 
      // TODO Auto-generated method stub 
      super.onPostExecute(result); 
progressDialog.dismiss(); 
//Update UI 
} 
} 
+0

我是否在片段內部執行操作??我不希望進度對話框顯示消息,我不希望它是一個對話框,只是一個轉輪。 – Fringo

+0

是的,你可以在一個片段內進行操作......對於轉輪,你可以使它出現在onPreExecute()中。首先在你的佈局中給你的父視圖一個id。將其可見性設置爲GONE。並通過以編程方式引入輪子並在onPostExecute()中提取數據時使輪子可見,從而使輪子隱藏並將父級佈局的可見性更改爲可見。 –

+0

爲你預加載東西,我猜你可以啓動一個intent服務來從webservice預加載數據到一個SQLite數據庫,它會在後臺完成所有的工作。然後在用戶滑動到適當的選項卡時進行閱讀! –

0

通過添加進度每一個片段佈局

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentBottom="true" 
     android:gravity="center" 
     android:orientation="horizontal" 
     android:visibility="visible" > 

     <ProgressBar 
      android:id="@+id/loading_time_progress_bar" 
      android:layout_width="20dip" 
      android:layout_height="20dip" 
      android:layout_gravity="center_vertical" /> 
    </LinearLayout> 
+0

好吧,那我如何從在線數據庫加載數據而不暫停活動? – Fringo

+0

在您的xml文件中將'invisible'放置在您的xml文件中的進度條上,例如'android:visibility =「invisible」',然後在'onPreExecute()'調用可見函數,如ProgressBar.setVisibility(View.VISIBLE) ;'in'onPostExecute()'調用像這樣不可見'ProgressBar.setVisibility(View.INVISIBLE);' – NagarjunaReddy

0

爲此,您可以試試這個XML文件中。使這個進度條「可見」和所有其他佈局「不見了」直到您加載您的用戶界面的所有數據。做它爲每個單獨的片段。當數據加載完成時,使您的UI 可見。以這種方式,它不會停止導航,因爲它不是進度對話框,而是佈局內的進度條。

希望它會有所幫助。

+0

請檢查我更新的問題 – Fringo

+0

你有沒有讀過?我明白你的問題。 – keshav

+1

我的問題是:如何加載數據而不暫停活動。如果我在異步任務中執行該操作,用戶將無法在選項卡之間滑動,並且視圖傳呼機內的對話框片段將無用 – Fringo