Java 错误:类中的构造函数无法应用于给定类型
如何将数据插入主键为(autoGenerate=true)的数据库 这是表格的代码Java 错误:类中的构造函数无法应用于给定类型,java,android,android-room,Java,Android,Android Room,如何将数据插入主键为(autoGenerate=true)的数据库 这是表格的代码 @Entity(tableName = "Account") public class Account { @PrimaryKey(autoGenerate = true) @ColumnInfo(index = true, name="ACCOUNT_ID") public int id; @NonNull @ColumnInfo private String bank; @NonNull @Colum
@Entity(tableName = "Account")
public class Account {
@PrimaryKey(autoGenerate = true)
@ColumnInfo(index = true, name="ACCOUNT_ID")
public int id;
@NonNull
@ColumnInfo
private String bank;
@NonNull
@ColumnInfo
private String bal;
public Account(int id, String bank, String bal) {
this.id = id;
this.bank = bank;
this.bal = bal;}
public int getId(){return this.id;}
public String getBank(){return this.bank;}
public String getBal(){return this.bal;}
}
TableDao
@Dao
public interface AccountDao {
@Query("SELECT * from Account ORDER BY bank ASC")
LiveData<List<Account>> getAlphabetizedAccounts();
@Insert(onConflict = OnConflictStrategy.ABORT)
void insert(Account account);
@Query("DELETE FROM Account")
void deleteAll();
}
结果我正在做这件事
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == NEW_ACCOUNT_ACTIVITY_REQUEST_CODE && resultCode == RESULT_OK) {
Account account = new Account(data.getStringExtra(NewAccountActivity._BANK_NAME),data.getStringExtra(NewAccountActivity._AC_BAL));
mAccountViewModel.insert(account);
} else {
Toast.makeText(
getApplicationContext(),
R.string.empty_not_saved,
Toast.LENGTH_LONG).show();
}
}
}
Error Line:Account account = new Account(data.getStringExtra(NewAccountActivity._BANK_NAME),data.getStringExtra(NewAccountActivity._AC_BAL));
我尝试了所有的删除和添加,但没有解决方案。我的构造函数有三个参数,我提供了两个。如何克服自动识别的问题确认任何更正。提前感谢。根据来源:
Intent getIntent():返回启动活动的意图。
因此,在startActivityForResult的情况下,使用(new Intent())getIntent()将更好地工作
对于@Primarykey(autoGenerate=True),使用0(零)。根据消息来源
如果字段类型为long或int(或其类型转换器将其转换为long或int),则插入项时,插入方法将0(零)视为未设置。
例如:
Table table =new Table(0, data1, data2,..);
mTable.insert(table);
最后我自己解决了我的问题。粘贴所有可以粘贴的代码不会有任何效果。编译错误确实为您提供了所有需要了解的信息。您定义了一个有3个参数的帐户构造函数,但在MainActivity的第87行,您试图使用一个有2个参数的构造函数,而该构造函数不存在,因此出现编译错误。@Igor llin在我的问题id中设置为“自动生成”,然后我将如何设置它。
Table table =new Table(0, data1, data2,..);
mTable.insert(table);