简体   繁体   English

错误:错误:此类应提供默认构造函数(不带参数的公共构造函数)

[英]Error:Error: This class should provide a default constructor (a public constructor with no arguments)

I keep getting this error whenever I try and generate a signed APK in Android Studio. 每当我尝试在Android Studio中生成签名的APK时,我都会不断收到此错误。

Error:Error: This class should provide a default constructor (a public constructor with no arguments) (com.examlemenu.acer.sigsekolahku.Database) [Instantiatable] 错误:错误:此类应提供默认构造函数(不带参数的公共构造函数)(com.examlemenu.acer.sigsekolahku.Database)[Instantiatable]

Can anyone tell me why this is happening? 谁能告诉我为什么会这样吗?

package com.examlemenu.acer.sigsekolahku;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

public class Database extends SQLiteOpenHelper {
    private static final int DATABASE_VERSION = 1;
    private static final String DATABASE_NAME = "sigsekolah";
    private SQLiteDatabase DB;
    public Database (Context context){
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {creaTabel (db);}

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {}
    public void openWriteble(){this.DB = getWritableDatabase();}
    public void openReadtable(){this.DB = getReadableDatabase();}
    public void close(){this.DB.close();}

    public void creaTabel(SQLiteDatabase db){
        String sekolahsma = "CREATE TABLE IF NOT EXISTS sma (id INTEGER PRIMARY KEY, nisn TEXT, nama TEXT, akreditasi TEXT, alamat TEXT, keterangan TEXT)";
        db.execSQL(sekolahsma);
    }

    public long insertsma(int id, String nisn, String nama, String akreditasi, String alamat, String keterangan){
        ContentValues values = new ContentValues();
        values.put("id", id);
        values.put("nisn", nisn);
        values.put("nama", nama);
        values.put("akreditasi", akreditasi);
        values.put("alamat", alamat);
        values.put("keterangan", keterangan);
        return DB.insert("sma", null, values);
    }

    public int updatesma(int id, String nisn, String nama, String akreditasi, String alamat, String keterangan) {
        ContentValues values = new ContentValues();
        values.put("id", id);
        values.put("nisn", nisn);
        values.put("nama", nama);
        values.put("akreditasi", akreditasi);
        values.put("alamat", alamat);
        values.put("keterangan", keterangan);
        return DB.update("sma", values, "id = " + id, null);
    }


    public int deletesma(int id){return DB.delete("sma", "id = " + id, null);}


    public ArrayList<String> getsmalist(){
        SQLiteDatabase db = this.getWritableDatabase();
        Cursor cursor = db.rawQuery("SELECT * from sma", null);
        ArrayList<String> List = new ArrayList<>();
        cursor.moveToFirst();
        for (int i = 0; i < cursor.getCount(); i++){
            List.add(cursor.getString(cursor.getColumnIndex("nama")));
            cursor.moveToNext();
        }
        return List;
    }
}

The only constructor you have for your class is this one 您班上唯一的构造函数是这个

public Database (Context context){
    ...
}

which takes a Context as a parameter. 它以上下文为参数。 The error that you are getting is telling you that it wants a constructor without any parameters. 您得到的错误告诉您它想要一个没有任何参数的构造函数。 Something like this. 这样的事情。

public Database(){
    ...
}

APK signing try to create object of this class to verify rules but it's not being able to create object. APK签名尝试创建此类的对象以验证规则,但无法创建对象。 Because it uses default constructor to create object. 因为它使用默认构造函数创建对象。

You need to define a constructor without any parameter(just like default constructor the one java implicitly provides you when you haven't write one). 您需要定义一个不带任何参数的构造函数(就像默认构造函数一样,一个Java隐式为您提供一个未编写的参数)。 As you have a parameterized constructor that's why compiler don't generated implicit constructor. 由于具有参数化的构造函数,因此编译器不会生成隐式构造函数。

Define a constructor like below, it will solve issue. 如下定义一个构造函数,它将解决问题。

public Database() {
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误:此类应提供默认的构造函数(不带参数的公共构造函数) - Error: This class should provide a default constructor (a public constructor with no arguments) 错误:此片段应提供默认构造函数(没有参数的公共构造函数) - Error: This fragment should provide a default constructor (a public constructor with no arguments) 错误:此类应提供默认构造函数(不带参数的公共构造函数)(com.example.app.Dblogic)[Instantiatable] - Error: This class should provide a default constructor (a public constructor with no arguments) (com.example.app.Dblogic) [Instantiatable] 错误:此类应提供默认构造函数 (.....) [可实例化] - Error : This class should provide a default constructor (.....) [Instantiatable] 错误:此类应提供默认的构造函数 - Error: This class should provide a default constructor 出现此错误:此类应为dbHelper提供默认的构造函数 - Got this error : This class should provide a default constructor for dbHelper 错误:创建apk时,此类应提供默认的构造函数 - error: this class should provide a default constructor, when creating apk Android-此类应提供默认构造函数 - Android - This Class Should Provide a Default Constructor 在android studio中构建签名的apk时出错:此类应提供默认的构造函数 - Error building signed apk in android studio: This class should provide default constructor Java初学者,类构造函数错误,未找到参数 - Java Beginner, Class Constructor error, no arguments found
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM