2016-03-08 92 views
-1

我有一個帶有列表視圖的fragmentB。列表視圖中的數據來自本地數據庫。當我點擊片段A中的texview時,我將從數據庫打開fragmentB與數據。但是在片段B加載之前,我可以看到片段A的一小部分。 FragmentB有asyncTask進行數據庫查詢。如何避免第二次延遲的這一部分。Android碎片:從數據庫緩慢加載數據

代碼從FragmentA去fragmentB

borerangeselect.setOnClickListener(new OnClickListener() { 
      BoreRangeFragment boreranges = new BoreRangeFragment(); 

      @Override 
      public void onClick(View v) { 

       rangeboregrade = boregradeselect.getText().toString(); 
       if (!rangeboregrade.equalsIgnoreCase("select")) { 
        FragmentManager fragmentManager = getFragmentManager(); 
        FragmentTransaction ft = fragmentManager.beginTransaction(); 

        ft.add(R.id.content_frame, boreranges); 
        FragmentChangeActivity.fragmentStack.lastElement().onPause(); 
        ft.hide(FragmentChangeActivity.fragmentStack.lastElement()); 
        FragmentChangeActivity.fragmentStack.push(boreranges); 
        ft.commit(); 

       } 
      } 
     }); 

FragmentB OnActvitycreated()

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onActivityCreated(savedInstanceState); 

      new MyBoreRangeTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,ToleranceFragment.rangeboregrade); 
    } 

回答

0

如果您正在使用的SQLite的工作,然後更好地使用LoaderManagers,他們很容易使用db時非常高效。

public class SampleActivity extends Activity implements LoaderManager.LoaderCallbacks<Cursor> { 

    public Loader<Cursor> onCreateLoader(int id, Bundle args) { ... } 

    public void onLoadFinished(Loader<Cursor> loader, Cursor data) { ... } 

    public void onLoaderReset(Loader<Cursor> loader) { ... } 

    /* ... */ 
} 

以下是Android文檔,你可以參考以獲取更多信息的URL, http://developer.android.com/reference/android/app/LoaderManager.html

希望這將幫助您解決您的問題。

0

您可以在onPreExecute方法中使用進度對話框,並將其隱藏在doInBackground()方法或查詢結束的位置。 希望它有效。