在活动中调用应用程序上下文

费伦茨

我正在尝试从Android上的一个活动中调用我的数据库(由Room创建),但是它需要应用程序上下文,如果我在Activity的构造函数中传递了“ application:Application”,则构建崩溃并告诉我:

java.lang.Class <com.exemple.instabus.PhotoActivity>没有零参数构造函数

这是我的代码:

class PhotoActivity(application: Application) : AppCompatActivity() {


    private val pictureDao = PictureDatabase.getDatabase(app)

//Some code ....

我需要上下文,我尝试传递“ this”,但是又遇到另一个错误

有人可以给我些帮助吗,我是这项技术的初学者

编辑:

这是我的数据库类,只是为了向您展示为什么我需要一个应用程序上下文


@Database(entities = [Picture::class], version = 1, exportSchema = false)
abstract class PictureDatabase : RoomDatabase(){

    abstract fun pictureDao() : PictureDao

     companion object{
        @Volatile
        private var INSTANCE : PictureDatabase? = null

        fun getDatabase(context: Context): PictureDatabase {
            if(INSTANCE == null){
                synchronized(this){
                    INSTANCE = Room.databaseBuilder(
                            context.applicationContext,
                            PictureDatabase::class.java,
                            "pictures.db"
                    ).build()
                }
            }
            return INSTANCE!!
        }
    }

}
自在

活动是我们在清单中声明的​​东西,然后使用来启动它们intent。但是,活动实例的创建是由system而不是由我们完成的。使用创建实例constructor,但是如果是我们,则可以有任意数量的重载构造函数。但是系统仅需要一个构造函数,该构造函数应该是零参数构造函数,并且应该是公共的。

所以你的活动签名

class PhotoActivity(application: Application) : AppCompatActivity() {

应该更改为

class PhotoActivity() : AppCompatActivity() {

要呼叫,fun getDatabase(context: Context): PictureDatabase您可以this传递activity活动是的间接子项Context

您可以通过以下方式进行操作:

  1. private val pictureDao by lazy{ PictureDatabase.getDatabase(this) }
  2. private lateinit var pictureDao:PictureDatabase然后在onCreate()初始化它
final override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.your_layout)
        PictureDatabase.getDatabase(this)
        //your logic goes here
   }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

应用程序上下文。这是什么?

来自分类Dev

根上下文/应用程序上下文和Servlet上下文

来自分类Dev

Spyne与Flask应用程序上下文

来自分类Dev

在Android的Fragment中获取应用程序上下文?

来自分类Dev

Spring root应用程序上下文和servlet上下文混淆

来自分类Dev

从CommandLinerRunner获取应用程序上下文

来自分类Dev

从非活动单例类获取应用程序上下文

来自分类Dev

获取应用程序上下文返回null

来自分类Dev

来自应用程序上下文的FragmentManager

来自分类Dev

Android Webview应用程序上下文

来自分类Dev

重新加载或刷新测试方法中的Spring应用程序上下文?

来自分类Dev

Spring递归加载应用程序上下文

来自分类Dev

Spring 4中的差异应用程序上下文

来自分类Dev

在应用程序上下文之外工作-Flask

来自分类Dev

Spring应用程序上下文为null

来自分类Dev

Tizen应用程序上的上下文菜单

来自分类Dev

从Flask应用程序中的外部应用程序上下文访问应用程序对象

来自分类Dev

如何从Eclipse中的命令处理程序事件中找出应用程序上下文

来自分类Dev

从Spring安全性上下文访问应用程序上下文

来自分类Dev

Android中的应用程序上下文

来自分类Dev

如何在调用应用程序上下文时检查会话ID

来自分类Dev

非活动类中的应用程序上下文?

来自分类Dev

在应用程序上下文之后加载上下文

来自分类Dev

如何在安全上下文中使用@Autowiring从应用程序上下文中调用bean

来自分类Dev

在非活动类中获取应用程序上下文以传递CSV文件

来自分类Dev

Android获取Android库上下文与应用程序上下文

来自分类Dev

获取应用程序上下文错误

来自分类Dev

在 Dagger 2 中的 Activity 中传递应用程序上下文(NullPointerException)

来自分类Dev

活动上下文与应用程序上下文

Related 相关文章

  1. 1

    应用程序上下文。这是什么?

  2. 2

    根上下文/应用程序上下文和Servlet上下文

  3. 3

    Spyne与Flask应用程序上下文

  4. 4

    在Android的Fragment中获取应用程序上下文?

  5. 5

    Spring root应用程序上下文和servlet上下文混淆

  6. 6

    从CommandLinerRunner获取应用程序上下文

  7. 7

    从非活动单例类获取应用程序上下文

  8. 8

    获取应用程序上下文返回null

  9. 9

    来自应用程序上下文的FragmentManager

  10. 10

    Android Webview应用程序上下文

  11. 11

    重新加载或刷新测试方法中的Spring应用程序上下文?

  12. 12

    Spring递归加载应用程序上下文

  13. 13

    Spring 4中的差异应用程序上下文

  14. 14

    在应用程序上下文之外工作-Flask

  15. 15

    Spring应用程序上下文为null

  16. 16

    Tizen应用程序上的上下文菜单

  17. 17

    从Flask应用程序中的外部应用程序上下文访问应用程序对象

  18. 18

    如何从Eclipse中的命令处理程序事件中找出应用程序上下文

  19. 19

    从Spring安全性上下文访问应用程序上下文

  20. 20

    Android中的应用程序上下文

  21. 21

    如何在调用应用程序上下文时检查会话ID

  22. 22

    非活动类中的应用程序上下文?

  23. 23

    在应用程序上下文之后加载上下文

  24. 24

    如何在安全上下文中使用@Autowiring从应用程序上下文中调用bean

  25. 25

    在非活动类中获取应用程序上下文以传递CSV文件

  26. 26

    Android获取Android库上下文与应用程序上下文

  27. 27

    获取应用程序上下文错误

  28. 28

    在 Dagger 2 中的 Activity 中传递应用程序上下文(NullPointerException)

  29. 29

    活动上下文与应用程序上下文

热门标签

归档