Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin 从实体自动生成主键获取更新的id_Kotlin_Mvvm_Viewmodel_Android Room_Android Viewmodel - Fatal编程技术网

Kotlin 从实体自动生成主键获取更新的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

我在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,

    @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
    insert现在返回id(如果insert没有插入行,则返回-1)。如果插入后仍使用报警对象,则可以使用以下内容:-

        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 */