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
方法