我的活动不同步与其布局xml。我真的不知道为什么编码似乎可以。我是一个初学者开发。
这是我在Android Studio中使用Kotlin的活动:
代码:
package com.pkndegwa.mycarmaintenance
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.work.Data
import androidx.work.ExistingWorkPolicy.REPLACE
import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager
import kotlinx.android.synthetic.service_list_item.*
import com.google.android.material.snackbar.Snackbar.LENGTH_LONG
import com.google.android.material.snackbar.Snackbar.make
import com.pkndegwa.mycarmaintenance.NotifyWork.Companion.NOTIFICATION_ID
import com.pkndegwa.mycarmaintenance.NotifyWork.Companion.NOTIFICATION_WORK
import java.lang.System.currentTimeMillis
import java.text.SimpleDateFormat
import java.util.*
import java.util.Locale.getDefault
import java.util.concurrent.TimeUnit.MILLISECONDS
class AlarmActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.service_list_item)
userInterface()
}
private fun userInterface() {
setSupportActionBar(toolbar)
val titleNotification = getString(R.string.notification_title)
done_fab.setOnClickListener {
val customCalendar = Calendar.getInstance()
customCalendar.set(
date_p.year, date_p.month, date_p.dayOfMonth, time_p.hour, time_p.minute, 0
)
val customTime = customCalendar.timeInMillis
val currentTime = currentTimeMillis()
if (customTime > currentTime) {
val data = Data.Builder().putInt(NOTIFICATION_ID, 0).build()
val delay = customTime - currentTime
scheduleNotification(delay, data)
val titleNotificationSchedule = getString(R.string.notification_schedule_title)
val patternNotificationSchedule = getString(R.string.notification_schedule_pattern)
make(
service_card,
titleNotificationSchedule + SimpleDateFormat(
patternNotificationSchedule, getDefault()
).format(customCalendar.time).toString(),
LENGTH_LONG
).show()
} else {
val errorNotificationSchedule = getString(R.string.notification_schedule_error)
make(service_card, errorNotificationSchedule, LENGTH_LONG).show()
}
}
}
private fun scheduleNotification(delay: Long, data: Data) {
val notificationWork = OneTimeWorkRequest.Builder(NotifyWork::class.java)
.setInitialDelay(delay, MILLISECONDS).setInputData(data).build()
val instanceWorkManager = WorkManager.getInstance(this)
instanceWorkManager.beginUniqueWork(NOTIFICATION_WORK, REPLACE, notificationWork).enqueue()
}
}
这是我的layout.xml。此布局已由两个活动使用,即"ServiceListAdapter"和"AlarmActivity"
<?xml version="1.0" encoding="utf-8"?>
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/service_card"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:layout_marginVertical="4dp"
android:backgroundTint="#E9E9ED"
android:clickable="true"
android:focusable="true"
android:minHeight="@dimen/button_min_height"
app:cardElevation="1dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/services_heading_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_margin="12dp"
android:layout_weight="0"
android:importantForAccessibility="no"
android:src="@drawable/ic_baseline_build_circle_24" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="2"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/services"
android:textAllCaps="false"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/services_done_list"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="Oil Filer, Spark Plugs, Battery" />
</LinearLayout>
<ImageView
android:id="@+id/services_expand_view"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_margin="12dp"
android:layout_weight="0"
android:contentDescription="@string/expand_more_button"
android:src="@drawable/ic_baseline_expand_more_24" />
</LinearLayout>
<com.google.android.material.divider.MaterialDivider
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/services_details_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingHorizontal="6dp"
android:paddingTop="0dp"
android:paddingBottom="8dp"
android:visibility="gone"
app:layout_constraintEnd_toStartOf="@+id/services_left_layout"
app:layout_constraintStart_toStartOf="@+id/services_left_layout">
<LinearLayout
android:id="@+id/services_left_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="8dp"
android:orientation="vertical"
app:layout_constraintEnd_toStartOf="@id/services_right_layout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/service_date"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/service_date_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="01 Nov 2022" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/current_mileage"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/current_mileage_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="2,000 km" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/next_service_mileage"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/next_service_mileage_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="4,000 km" />
</LinearLayout>
<LinearLayout
android:id="@+id/services_right_layout"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="8dp"
android:orientation="vertical"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/services_left_layout"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/next_service_date"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/next_service_date_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="01 Mar 2023" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/total_cost"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp" />
<TextView
android:id="@+id/total_cost_text_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAllCaps="false"
android:textSize="14sp"
tools:text="1,500 KSH" />
</LinearLayout>
<TextView
android:id="@+id/service_notes_title_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="24dp"
android:text="@string/notes"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
android:textSize="16sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/services_left_layout" />
<TextView
android:id="@+id/service_notes_text_view"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:textAllCaps="false"
android:textSize="14sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/service_notes_title_text_view"
tools:text="Testing out the notes appearance" />
<!-- This section is to create our alarm from different page since Examiner-->
<!-- want the user to separate the alarm from the add service -->
<EditText
android:id="@+id/titleET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/service_notes_text_view"
android:hint="Title for your notification"
tools:context=".ui.AlarmActivity"
android:autofillHints="Which Car" />
<EditText
android:id="@+id/messageET"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="You can set your own notification here"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/titleET"
tools:context=".ui.AlarmActivity"
android:autofillHints="what service" />
<DatePicker
android:id="@+id/date_p"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="-30dp"
android:layout_marginRight="-30dp"
android:layout_weight="1"
android:calendarViewShown="false"
android:datePickerMode="spinner"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/messageET"
tools:context=".ui.AlarmActivity"/>
<TimePicker
android:id="@+id/time_p"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="-30dp"
android:layout_marginRight="-30dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:timePickerMode="spinner"
app:layout_constraintTop_toBottomOf="@id/date_p"
tools:context=".ui.AlarmActivity"/>
<Button
android:id="@+id/done_fab"
android:layout_marginTop="20dp"
android:layout_gravity="center"
android:text="schedule_notification"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toBottomOf="@id/time_p"
tools:context=".ui.AlarmActivity"/>
<LinearLayout
android:id="@+id/services_actions_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end|center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/done_fab">
<Button
android:id="@+id/edit_service_button"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="4dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="4dp"
android:padding="2dp"
android:text="@string/edit"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
app:drawableTopCompat="@drawable/ic_baseline_edit_24" />
<Button
android:id="@+id/delete_service_button"
style="@style/Widget.MaterialComponents.Button.TextButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginHorizontal="2dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="4dp"
android:padding="2dp"
android:text="@string/delete"
android:textAppearance="?attr/textAppearanceBody2"
android:textColor="@color/black"
app:drawableTopCompat="@drawable/ic_baseline_delete_24" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
1条答案
按热度按时间yyyllmsg1#
在onCreate之前,您需要初始化所有小部件,如
按钮完成_制造;//在JAVA中
私有lateinit变量done_fab:按钮//在Kotlin中
//在此添加其他
在setContentView之后,您需要初始化名称如下的同一小部件
完成_工厂=查找视图按ID(R. ID.完成_工厂);//在java中
完成_工厂=查找视图按Id(R. id.完成_工厂)//在Kotlin中
//在此添加其他
它将准备好在整体活动课中使用。