我想創建一個片段,該片段在開始會顯示一個進度條,其他線程將調用一個函數,它會帶來一些信息(從遠程服務器所帶來的信息 - 需要幾秒鐘)填充一些將被添加到片段的視圖。我試圖將視圖添加到片段中,但得到了一個異常,我無法更改不在主線程上的線程的UI。所以我在UI線程上運行它,但問題在於用戶界面堆疊直到從服務器返回所有信息。異步補充意見,片段中的Android
這裏是我的代碼:
public class MainSalePage extends SherlockFragment
{
protected View maneSalePage;
protected List<SaleObj> saleList;
protected int numberOfsalesOnScreen;
protected LinearLayout saleConteiner;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
maneSalePage = inflater.inflate(R.layout.main_page_fragment, container, false);
numberOfsalesOnScreen = 0;
saleConteiner = (LinearLayout) maneSalePage.findViewById(R.id.salesContainer);
getActivity().runOnUiThread(new Runnable()
{
@Override
public void run()
{
SaleService saleService = new SaleService();
saleList = saleService.getNextSales(numberOfsalesOnScreen); //the operation that takes time.
for(int i = 0; i < saleList.size(); i++)
{
SaleRow saleRow = new SaleRow(getActivity());
saleRow.populateWith(saleList.get(i));
saleConteiner.addView(saleRow);
}
}
});
return maneSalePage;
}
}
我如何能展現片段,而不是疊加的UI直到點我從服務器獲取我的所有數據?
謝謝!
謝謝,但仍然如此,片段將等待,直到for循環結束,然後才顯示在屏幕上。我希望它出現,然後填充它。 – vlio20
問題是你正在onCreate上做這件事,在片段初始化後有什麼辦法做到這一點嗎? –
我不介意在創建它之後再做。如果可能。 – vlio20