Android:getContext()错误
只是一个简单的错误,但我真的很难解决这个问题。为什么未应用此Android:getContext()错误,android,android-context,Android,Android Context,只是一个简单的错误,但我真的很难解决这个问题。为什么未应用此getContext() public void ClearRecentPlayer() { mDbHelper = new DataConn(getContext()); //<---getContext() in redline(not applied) SQLiteDatabase db = mDbHelper.getWritableDatabase(); Content
getContext()
public void ClearRecentPlayer() {
mDbHelper = new DataConn(getContext()); //<---getContext() in redline(not applied)
SQLiteDatabase db = mDbHelper.getWritableDatabase();
ContentValues v = new ContentValues();
v.put(FeedReaderContract.FeedEntry.COLUMN_NAME_STATS, 0);
String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_STATS + " = ?";
String[] selectionArgs = { "0" };
int c = db.update(
FeedReaderContract.FeedEntry.TABLE_NAME_PLAYER,
v,
selection,
selectionArgs);
}
正如这里所解释的()
•View.getContext()
:返回视图当前所在的上下文
磨合。通常是当前活跃的活动
•Activity.getApplicationContext()
:返回
整个应用程序(所有活动都在其中运行的流程)
的)。如果需要,请使用此上下文而不是当前活动上下文
上下文绑定到整个应用程序的生命周期,而不仅仅是
目前的活动
•ContextWrapper.getBaseContext()
:如果您需要访问上下文
在另一个上下文中,使用ContextWrapper。上下文
从ContextWrapper内部引用,可通过
getBaseContext
因此,在尝试使用DataBaseHelper时,最好使用getApplicationContext()
并且,您可以仅从“活动”或“服务”调用getApplicationContext
,也可以从上下文实例调用。比如activity.getApplicationContext()
您需要数据库帮助器类的应用程序上下文。因此,在初始化时将上下文传递给数据库 ClearRecentPlayer方法是否在活动中?否则,您必须将应用程序上下文传递给调用
ClearRecentPlayer
方法的类
您可以在该类中创建成员变量.Context
,也可以调用ClearRecentPlayer
方法作为ClearRecentPlayer(Context Context)
,如下所述()
•View.getContext()
:返回视图当前所在的上下文
磨合。通常是当前活跃的活动
•Activity.getApplicationContext()
:返回
整个应用程序(所有活动都在其中运行的流程)
的)。如果需要,请使用此上下文而不是当前活动上下文
上下文绑定到整个应用程序的生命周期,而不仅仅是
目前的活动
•ContextWrapper.getBaseContext()
:如果您需要访问上下文
在另一个上下文中,使用ContextWrapper。上下文
从ContextWrapper内部引用,可通过
getBaseContext
因此,在尝试使用DataBaseHelper时,最好使用getApplicationContext()
并且,您可以仅从“活动”或“服务”调用getApplicationContext
,也可以从上下文实例调用。比如activity.getApplicationContext()
您需要数据库帮助器类的应用程序上下文。因此,在初始化时将上下文传递给数据库 ClearRecentPlayer方法是否在活动中?否则,您必须将应用程序上下文传递给调用
ClearRecentPlayer
方法的类
您可以在该类中创建成员变量.Context
,也可以调用ClearRecentPlayer
方法作为ClearRecentPlayer(Context Context)
getContext()
仅是视图的可用方法
如果您的方法位于该数据库类中,则实际上不需要上下文。或其自身类中的任何DataConn
实例
public class DataConn extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "db_egame.db";
private Context mContext;
public DataConn(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.mContext = context;
}
public void clearRecentPlayer() {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues v = new ContentValues();
v.put(FeedReaderContract.FeedEntry.COLUMN_NAME_STATS, 0);
String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_STATS + " = ?";
String[] selectionArgs = { "0" };
int c = db.update(
FeedReaderContract.FeedEntry.TABLE_NAME_PLAYER,
v,
selection,
selectionArgs);
}
getContext()
只是视图的一种可用方法
如果您的方法位于该数据库类中,则实际上不需要上下文。或其自身类中的任何DataConn
实例
public class DataConn extends SQLiteOpenHelper {
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "db_egame.db";
private Context mContext;
public DataConn(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
this.mContext = context;
}
public void clearRecentPlayer() {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues v = new ContentValues();
v.put(FeedReaderContract.FeedEntry.COLUMN_NAME_STATS, 0);
String selection = FeedReaderContract.FeedEntry.COLUMN_NAME_STATS + " = ?";
String[] selectionArgs = { "0" };
int c = db.update(
FeedReaderContract.FeedEntry.TABLE_NAME_PLAYER,
v,
selection,
selectionArgs);
}
对于activity/AppCompactActivity,请尝试getApplicationContext()而不是getContext(),对于activity/AppCompactActivity,请尝试getApplicationContext()而不是getContext(),因为这不会返回到任何上下文,或者上下文没有指向方法所在的内容,请尝试class。这将或应用程序.getContext()
或getApplicationContext()
任何可用于实际指向方法所在上下文的内容。我以为我在学习一个很好的教程…:-((我是否应该重建代码?问题不清楚…请显示所有相关代码。这意味着您调用该上下文方法的类别定义,我怀疑您的教程存储DataConn mDbHelper;
在DataConn
类中itself@Jay我不知道,你的问题很小,就像什么板球比男人高如果您可以提供更详细的问题,这可能会有所帮助,因为这不会返回到任何上下文,或者上下文没有指向方法所在的内容,请尝试class。这是或应用程序.getContext()
或getApplicationContext()
任何可用的方法都将实际指向您的方法所在的上下文。我以为我遵循了一个很好的教程…:-((我应该重建我的代码吗?问题不清楚…请显示所有相关代码的名称。意思是您调用上下文方法的位置的类定义我怀疑您的教程是否将DataConn mDbHelper;
存储在DataConn
类中itself@Jay我不知道,你的问题很简单,什么样的板球比男人高如果你能提供一个更详细的问题,那可能会有帮助。我不能。我只能使用'getContext()'在此类中..我不知道您为什么要在活动中尝试此操作?您需要数据库帮助器类的应用程序上下文。因此,在初始化时将上下文传递到数据库ClearRecentPlayer方法在活动中?否则,您必须将应用程序上下文传递到从中调用ClearRecentPlayer
method.yo的类您可以在该类中创建成员变量.Context
,也可以调用ClearRecentPlayer
方法