android 在Fragment 中使用ormlite 資料庫

來源:互聯網
上載者:User

標籤:

在ormlite官方的demo中,Activity 中訪問資料庫是extends ormliteBaseActivity.

那在Fragment中怎麼使用呢?

 

簡單的:

public class OrmLiteFragment extends Fragment {    private DatabaseHelper databaseHelper = null;    protected DatabaseHelper getHelper() {        if (databaseHelper == null) {            databaseHelper =                OpenHelperManager.getHelper(getActivity(), DatabaseHelper.class);        }        return databaseHelper;    }    @Override    public void onDestroy() {        super.onDestroy();        if (databaseHelper != null) {            OpenHelperManager.releaseHelper();            databaseHelper = null;        }    }}

模ormliteBaseActivity

/** * 只能在OnStart 以後的生命週期中調用。 *  * @author Administrator * * @param <H> */public class OrmBaseLiteFragment <H extends OrmLiteSqliteOpenHelper> extends Fragment { private volatile H helper; private volatile boolean created = false; private volatile boolean destroyed = false; private static Logger logger = LoggerFactory.getLogger(OrmBaseLiteFragment.class);  /**  * Get a helper for this action.  */ public H getHelper() {  if (helper == null) {   if (!created) {    throw new IllegalStateException("A call has not been made to onCreate() yet so the helper is null");   } else if (destroyed) {    throw new IllegalStateException(      "A call to onDestroy has already been made and the helper cannot be used after that point");   } else {    throw new IllegalStateException("Helper is null for some unknown reason");   }  } else {   return helper;  } }  /**  * Get a connection source for this action.  */ public ConnectionSource getConnectionSource() {  return getHelper().getConnectionSource(); } // /**//  * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!//  * //  * //  */// @Override// public View onCreateView(LayoutInflater inflater , ViewGroup container , Bundle savedInstanceState)// {//  if (helper == null) {//   helper = getHelperInternal(getActivity());//   created = true;//  }//  super.onCreate(savedInstanceState);//  return container;// }  @Override public void onStart() {  super.onStart();  if (helper == null) {   LogUtil.e("==============ormFragment", "getHelperInternal   in  ormFragment");   helper = getHelperInternal(getActivity());   created = true;  } }    @Override public void onDestroy() {  super.onDestroy();  releaseHelper(helper);  destroyed = true; } /**  * This is called internally by the class to populate the helper object instance. This should not be called directly  * by client code unless you know what you are doing. Use {@link #getHelper()} to get a helper instance. If you are  * managing your own helper creation, override this method to supply this activity with a helper instance.  *   * <p>  * <b> NOTE: </b> If you override this method, you most likely will need to override the  * {@link #releaseHelper(OrmLiteSqliteOpenHelper)} method as well.  * </p>  */ protected H getHelperInternal(Context context) {  @SuppressWarnings({ "unchecked", "deprecation" })  H newHelper = (H) OpenHelperManager.getHelper(context);  logger.trace("{}: got new helper {} from OpenHelperManager", this, newHelper);  return newHelper; } /**  * Release the helper instance created in {@link #getHelperInternal(Context)}. You most likely will not need to call  * this directly since {@link #onDestroy()} does it for you.  *   * <p>  * <b> NOTE: </b> If you override this method, you most likely will need to override the  * {@link #getHelperInternal(Context)} method as well.  * </p>  */ protected void releaseHelper(H helper) {  OpenHelperManager.releaseHelper();  logger.trace("{}: helper {} was released, set to null", this, helper);  this.helper = null; } @Override public String toString() {  return getClass().getSimpleName() + "@" + Integer.toHexString(super.hashCode()); }   }

android 在Fragment 中使用ormlite 資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.