Kotlin 从实体自动生成主键获取更新的id
我在Android Studio上创建了Alarm类并将其注释为实体。 在这个类中,我将id变量作为实体主键,它是自动生成的Kotlin 从实体自动生成主键获取更新的id,kotlin,mvvm,viewmodel,android-room,android-viewmodel,Kotlin,Mvvm,Viewmodel,Android Room,Android Viewmodel,我在Android Studio上创建了Alarm类并将其注释为实体。 在这个类中,我将id变量作为实体主键,它是自动生成的 @Entity(tableName = "alarm_data_table") class Alarm( @ColumnInfo(name = "alarm_hour") var alarmHour: Int, @ColumnInfo(name = "alarm_min") var alarmMin: Int, @Column
@Entity(tableName = "alarm_data_table")
class Alarm(
@ColumnInfo(name = "alarm_hour")
var alarmHour: Int,
@ColumnInfo(name = "alarm_min")
var alarmMin: Int,
@ColumnInfo(name = "is_am")
var isAM: Boolean,
var days: ArrayList<Int>?,
@ColumnInfo(name = "is_on")
var isOn: Boolean,
var label: String,
@PrimaryKey(autoGenerate = true)
val id: Int = 0
) {
fun setAlarmSchOnOff(isOn: Boolean, activity: Activity){
if (isOn){setAlarmScheduleOn(activity)}
if (!isOn){setAlarmScheduleOff(activity)}
}
fun setAlarmScheduleOn (activity: Activity) {
val alarmManager = activity.getSystemService(Context.ALARM_SERVICE) as AlarmManager
Log.d("ALARM ON", Integer.toString(id))
val alarmIntent = Intent(activity, AlarmReceiver::class.java).let { intent ->
intent.putExtra(Constants().ALARM_LABEL_KEY,label)
PendingIntent.getBroadcast(
activity,
id,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)
}
val calendar: Calendar = Calendar.getInstance().apply {
timeInMillis = System.currentTimeMillis()
set(Calendar.HOUR_OF_DAY, alarmHour)
set(Calendar.MINUTE, alarmMin)
}
days?.let {
it.forEach {
calendar.set(Calendar.DAY_OF_WEEK, it) }
alarmManager.setInexactRepeating(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
AlarmManager.INTERVAL_HOUR,
alarmIntent
)
} ?:run{
alarmManager.set(
AlarmManager.RTC_WAKEUP,
calendar.timeInMillis,
alarmIntent)
}
}
fun setAlarmScheduleOff(activity: Activity) {
val alarmManager = activity.getSystemService(Context.ALARM_SERVICE) as AlarmManager
Log.d("ALARM OFF", Integer.toString(alarmId))
val alarmIntent = Intent(activity, AlarmReceiver::class.java).let { intent ->
PendingIntent.getBroadcast(
activity,
id,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
)}
alarmManager.cancel(alarmIntent)
}
}
实体更新值/成功将其插入表后,是否有任何方法返回id值
在实体更新id值后,是否有任何方法返回id值/
成功地将其插入到表中
- i、 e.将其设置为返回:Long
myAlarm.id = alarmDao.insertAlarm(myAlarm) /*<<<<<<<<<< SET THE id according to the inserted id */
myAlarm.id=alarmDao.insertAlarm(myAlarm)/*
@PrimaryKey(autoGenerate = true)
var id: Long = 0 /*<<<<<<<<<< var not val + Long instead of Int */
@Insert
fun insertAlarm(alarm :Alarm) :Long
myAlarm.id = alarmDao.insertAlarm(myAlarm) /*<<<<<<<<<< SET THE id according to the inserted id */