Search code examples
androidkotlintimepicker

set initial value to time piker


I want to set initial value to time piker

import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TimePicker
import androidx.annotation.RequiresApi


class MainActivity : AppCompatActivity() {
@RequiresApi(Build.VERSION_CODES.M)
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    var periodTimePiker: TimePicker = findViewById(R.id.period_timePicker)
    periodTimePiker.setIs24HourView(true)
    periodTimePiker.hour = 10
    periodTimePiker.minute = 10

}
}

and xml

 <TimePicker
            android:id="@+id/period_timePicker"
            android:layout_width="291dp"
            android:layout_height="137dp"
            android:layout_gravity="center_vertical"
            android:timePickerMode="spinner" />
        />

when use periodTimePiker.hour = 10 periodTimePiker.minute = 10 Application stop

the crash from android sy

 E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.test.appTest, PID: 10550
java.lang.NoSuchMethodError: android.widget.TimePicker.setHour
    at com.test.appTest.MainActivity.onCreate(MainActivity.kt:20)
    at android.app.Activity.performCreate(Activity.java:5264)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1099)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2282)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392)
    at android.app.ActivityThread.access$800(ActivityThread.java:151)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5421)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:979)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
    at dalvik.system.NativeStart.main(Native Method)

i tried periodTimePiker.hour and setHour


Solution

  • setHour and setMinute RequiresApi is API 23. You probably running it on lower version this is why it crashed. You can use deprecated method for lower versions.

        periodTimePiker.setIs24HourView(true)
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
            periodTimePiker.hour=5
            periodTimePiker.minute=16
        }else{
            periodTimePiker.currentHour=5
            periodTimePiker.currentMinute=16
        }