java - 如何在 android 中的 contentProvider 类中获取 mainactivity.this

标签 java android android-sqlite android-contentprovider android-context

我正在 android 中编写一个内容提供程序。我想编写查询实现。我正在 contentProvider 的查询函数中创建一个 DbHelper 对象。但是当我创建这个时,我收到错误,即我无法访问此内容提供程序类中的 MainActivity.this 。我需要 MainActivity.this 以便我可以初始化 DbHelper 并使用我在 DbHelper 类中已实现的函数查询。我该如何解决这个问题?

代码:

public class CourseContentProvider extends ContentProvider {


    @Override
    public Cursor query(Uri arg0, String[] arg1, String arg2, String[] arg3,
            String arg4) {
        // TODO Auto-generated method stub

        if (sURIMatcher.match(arg0)==COURSE) {
            MyDbHelper obj = new MyDbHelper(MainActivity.this);//Error msg here: No enclosing instance of the type MainActivity is accessible in scope
        }
        return null;
    }
//other auto generated functions
}

谢谢。

最佳答案

要获取Context,只需在扩展ContentProvider的类中调用getContext()

示例:

@Override
    public boolean onCreate() {
        Context context = getContext();
        DBHelper = new DatabaseHelper(context);
        db = DBHelper.getWritableDatabase();
        return (db == null) ? false : true;
    }

关于java - 如何在 android 中的 contentProvider 类中获取 mainactivity.this,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22543757/

相关文章:

java - 调用方法,将变量重命名为新变量

java - LIBGDX:InputAdapter 的 keyDown、keyUp 等返回值的含义是什么

java - 应将什么上下文名称传递给 Glide 方法?

android - 如何修复在 android 内容提供者中找不到的内容提供者 url?

Android:将 FCM 通知保存到 Room DB

android - Android登录,但从mysql获取数据并添加sqlite

Java Time API - 获取总运行时间的更好方法

java - 在不使用 java.util.Properties 的情况下读取文件并获取 key=value

Android xxhdpi、420 ​​dpi 和 480 dpi

android - 使用 VOIP 应用程序代替电话拨号器