安卓:签名APK问题 - 存在默认构造函数但显示没有

5
我正在获取数据。
'This class should provide a default constructor'

我正在尝试构建APK时遇到错误。

这是我的DBHelper类:

public class DBHelper extends SQLiteOpenHelper {

// create variables
public DBHelper(Context context)
{
    super(context, DATABASE_NAME , null, 1);
}
// onCreate

我的印象是

public DBHelper(Context context)

默认构造函数是什么?我查看了其他答案,但没有找到任何有用的信息...

提前感谢。


1
你在使用Proguard吗? - Dmitry Zaytsev
你使用的是哪个版本的Gradle/Android Studio? - Blackbelt
您是在编译时还是运行应用时遇到了错误? - Dmitry Zaytsev
最新的Android Studio吧?应用程序运行时没有错误,只有在尝试创建签名APK时才会出现问题。除非有一种方法可以直接获取运行应用程序时创建的APK文件? - ShWhite
Nicopico的回答更有意义,因为SQLiteOpenHelper需要Context才能工作。另一方面,Fragment需要空构造函数才能工作,但由于您已经接受了其他答案,所以我可能是错的... - Andrew T.
2个回答

2

默认构造函数是没有任何参数的构造函数。

SQLiteOpenHelper 至少需要一个上下文,因此您无法为 DBHelper 创建默认构造函数。您确定这就是导致此错误的类吗?


-1

正如错误提示所示:

错误:该类应该提供一个默认构造函数(一个没有参数的公共构造函数)

尝试这种方式:

public class DBHelper extends SQLiteOpenHelper {

// create variables

public DBHelper(){
    super();
}

public DBHelper(Context context)
{
    super(context, DATABASE_NAME , null, 1);
}



// onCreate

是的 - 它起作用了!非常感谢你! - ShWhite
1
我必须添加以下内容: public DBHelper(){ super(null, null, null, 1); } 以防其他人遇到问题 :) - ShWhite
如果您在super(...)的第一个参数中传递了null,那么您的应用很有可能会崩溃,并显示出NullPointerException异常。 - nicopico
我从不为SQLiteOpenHelper实现空构造函数,所以我对此表示怀疑...除非OP没有提到什么。 - Andrew T.
我刚刚回答了这个错误:“该类应该提供一个默认构造函数”,并且帮助了OP。 “被接受的答案并不一定是最佳答案,它们只表示它们帮助了OP。” - Maveňツ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接