【问题标题】:Access databasehelper object globally全局访问 databasehelper 对象
【发布时间】:2011-03-09 16:03:45
【问题描述】:

每当我需要创建 SQLiteOpenHelper 'databasehelper' 对象时,我都需要在函数调用中传递上下文。

dbUtils.setEntityValues(this, moduleId, sendTo)

“this”参数指的是活动上下文。每次新的 databasehelper 对象创建和执行数据库任务时。

DataBaseHelper dbHelper = new DataBaseHelper(context);


    try {
        dbHelper.openDataBase();

        SQLiteDatabase db = dbHelper.getReadableDatabase();

从未扩展 Activity 或 Application 的类文件中,我无法创建 databasehelper 对象。有什么方法可以全局获取 databasehelper 对象吗?或者以任何方式在非 Activity 的类中获取应用程序上下文...?

我是android初学者,请提出一些建议..

提前致谢, 乔

【问题讨论】:

    标签: android


    【解决方案1】:

    乔,

    您可以使用getApplicationContext()getBaseContext() 从不扩展上下文的类中访问应用程序上下文。

    您可能还想稍微阅读一下这个问题What's the difference between the various methods to get a Context?

    祝你好运!

    【讨论】:

      【解决方案2】:

      谢谢willytate,我解决了。我的做法是……

      class myActivity extends Activity { 
      public static Activity me = null; 
      ... 
      protected void onCreate(Bundle icicle) { 
           ... 
          me = this; 
          ... 
          }; 
      }; 
      class myClass { 
      void myMthd() { 
          ... 
          Intent  myIntnt = myActivity.me.getIntent(); 
          ... 
          }; 
      }; 
      

      现在我可以创建 'databasehelper' 对象,而无需像以下那样传递上下文..

      public DataBaseHelper() {
      
          super(myActivity.me.getApplicationContext(), DB_NAME, null, 1);     
      
          this.myContext = myActivity.me.getApplicationContext();
      }
      

      再次感谢,

      【讨论】:

        猜你喜欢
        • 2012-05-13
        • 2011-08-25
        • 1970-01-01
        • 1970-01-01
        • 2016-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        相关资源
        最近更新 更多