Android 安卓:理解这一点
我试图理解一个负责连接数据库的类 代码是:Android 安卓:理解这一点,android,sqlite,Android,Sqlite,我试图理解一个负责连接数据库的类 代码是: public class DBAdapter { final Context context; DatabaseHelper DBHelper; SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBHelper
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.
}
}
因此,为了进行连接,我应该
我的问题是这行this.context=ctx;
有什么作用:
为什么我们不能忽略这一点,而只是:
public DBAdapter(Context ctx)
{
DBHelper = new DatabaseHelper(ctx);
}
如果您正在学习本教程,则它们有一个上下文类变量,因为它们在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;
}
通过该关键字,您可以指定ctx变量中的DBAdapter方法的活动类的地址或引用(属于上下文类型)将分配给类级上下文变量 尽管您可以删除类级变量和
this.context=ctx;
行,只需按照指定的方式编写即可
public DBAdapter(Context ctx)
{
DBHelper = new DatabaseHelper(ctx);
}
但如果您想在整个类中使用ctx(上下文引用)值,建议使用类变量。根据您的类代码。您不需要将上下文分配给另一个上下文变量。这是简化的代码
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.
}
}
当您在其他方法中使用上下文时,将上下文分配给另一个变量也很有用。因为变量的范围仅限于其方法。您不能在构造函数之外使用它(根据您的代码)您能给我文档链接吗?
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.
}
}