如何在静态方法中获取此Context

时间:2013-04-06 01:26:35

标签: android

我在使用静态方法初始化新对象时遇到问题。 我有一个类似于数据库的类。

public class LatLogDBAdapter {   
 private final Context mCtx;     
 private DatabaseHelper mDbHelper;
 private SQLiteDatabase mDb;

 private static class DatabaseHelper extends SQLiteOpenHelper {

      DatabaseHelper(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }


      @Override
      public void onCreate(SQLiteDatabase db) {
       Log.w(TAG, DATABASE_CREATE);
       db.execSQL(DATABASE_CREATE);
      }      
     }

我在另一个类中有一个静态方法,在静态方法中我喜欢使用此Context初始化DatabaseHelper,但错误是“不能在静态上下文中使用它”。

我在另一个类中的静态方法如下,

 public class DetailMapView extends FragmentActivity {
            public static void updateLocation(String number, String LatLong){
                 LatLogDBAdapter dbHelper = new LatLogDBAdapter(this);

           }

    }

我怎么能没有错误“不能在静态上下文中使用它”。 感谢

2 个答案:

答案 0 :(得分:14)

public class DetailMapView extends FragmentActivity {
        public static void updateLocation(Context context, String number, String LatLong){
             LatLogDBAdapter dbHelper = new LatLogDBAdapter(context);

       }

}

Context作为参数添加到静态方法中,并在调用方法时将其传入。

答案 1 :(得分:0)

您的函数'updateLocation'是静态的。这意味着没有与之关联的实例,因此没有'this'。

您将需要找到另一种方法来获取数据库帮助程序类的上下文。

编辑:就个人而言,我发现必须将上下文传递给许多不同的函数是一件痛苦的事。在活动中,您只需将活动用作上下文,但在许多情况下(例如,使用数据库),您将需要使用应用程序上下文。为此,我发现这种方法很有用:
Static way to get 'Context' on Android?