Android:了解this.context

时间:2014-05-02 15:43:48

标签: android sqlite

我正在尝试了解负责与数据库建立连接的类 代码是:

    public class DBAdapter 
    {

        final Context context;

        DatabaseHelper DBHelper;
        SQLiteDatabase db;

        public DBAdapter(Context ctx)
        {
            this.context = ctx;
            DBHelper = new DatabaseHelper(context);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper
        {
            DatabaseHelper(Context context)
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            //All the necessary method are implemented.
        }

}

所以要做一个连接我应该只是“

DBAdapter db=new DBAdapter(this);

我的问题是此行this.context = ctx;的作用是什么:

为什么我们不能简单地省略它:

public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

3 个答案:

答案 0 :(得分:1)

通过此关键字,您指定将在ctx变量中进入DBAdapter方法的活动类的地址或引用(具有上下文类型)将分配给类级别的上下文变量。

虽然您可以删除类级别变量和this.context = ctx;行,但只需按照指定的内容编写

 public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

但是如果你想对所有类使用ctx(上下文引用)值,建议使用类变量。

答案 1 :(得分:0)

如果您正在学习本教程,那么他们有一个Context类变量,因为它们在open方法中引用它。

public DbAdapter(Context ctx)
{
    this.mCtx = ctx;
    mUsername = PreferenceManager.getDefaultSharedPreferences(ctx).getString(Preferences.USERNAME, "");
}

public DbAdapter open() throws SQLException
{
    mDbHelper = new DatabaseHelper(mCtx);
    mDb = mDbHelper.getWritableDatabase();
    return this;
}

答案 2 :(得分:0)

根据您的班级代码。您不需要将上下文分配给另一个上下文变量。这是简化的代码。

 public class DBAdapter 
    {

        DatabaseHelper DBHelper;
        SQLiteDatabase db;

        public DBAdapter(Context ctx)
        {
            DBHelper = new DatabaseHelper(ctx);
        }

        private static class DatabaseHelper extends SQLiteOpenHelper
        {
            DatabaseHelper(Context context)
            {
                super(context, DATABASE_NAME, null, DATABASE_VERSION);
            }
            //All the necessary method are implemented.
        }

}

在其他方法中使用上下文时,将上下文分配给另一个变量很有用。因为变量的范围仅限于其方法。你不能在构造函数之外使用它(根据你的代码)