Android时间选择器:错误-未实现接口(IceCreamSandwich 4.0.3)

Android时间选择器:错误-未实现接口(IceCreamSandwich 4.0.3),android,android-timepicker,Android,Android Timepicker,我正在编写一个小应用程序来练习AlarmManager,它应该可以在旧的Android手机上使用。我认为4.0.3冰淇淋三明治对于我来说已经足够低了 该应用程序尚未完成,但有足够的功能在现实生活中崩溃。当我使用Nexus 5X API 25在模拟器上运行该应用程序时,到目前为止,该应用程序运行良好,来自时间选择器的值被读取并显示在屏幕上。 但是,当我在我的HTC One V Android 4.0.3 API 15上运行它时,这些值不是从计时器读取的,我在LogCat中得到以下错误: E/Han

我正在编写一个小应用程序来练习AlarmManager,它应该可以在旧的Android手机上使用。我认为4.0.3冰淇淋三明治对于我来说已经足够低了

该应用程序尚未完成,但有足够的功能在现实生活中崩溃。当我使用Nexus 5X API 25在模拟器上运行该应用程序时,到目前为止,该应用程序运行良好,来自时间选择器的值被读取并显示在屏幕上。 但是,当我在我的HTC One V Android 4.0.3 API 15上运行它时,这些值不是从计时器读取的,我在LogCat中得到以下错误:

E/Handler: Failed to handle callback; interface not implemented,
callback:android.view.View$PerformClick@40e1cb80                                                              
java.lang.NoSuchMethodError: android.widget.TimePicker.getHour
下面是我的代码。OnClickListener调用display_time,从时间选择器读取小时和分钟值时失败

package com.schalkx.alarm101;

import android.app.AlarmManager;
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker;

import java.util.Calendar;

public class MainActivity extends AppCompatActivity {

    AlarmManager alarm_manager;
    TimePicker alarm_time_picker;
    TextView update_text;.   


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Initialize the alarm manager
        alarm_manager = (AlarmManager) getSystemService(ALARM_SERVICE);

        // Initialize the time picker
        alarm_time_picker = (TimePicker) findViewById(R.id.timePicker);

        // Initialize the update box
        update_text = (TextView) findViewById(R.id.update_text);

        // Create a calendar instance
        final Calendar  calendar = Calendar.getInstance();

        // Initialize the start alarm button
        Button alarm_on = (Button) findViewById(R.id.alarm_on);

        // Implement OnClickListener
        alarm_on.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // Update the update_text
                display_time();
            }
        });
    }


    private void set_alarm_text(String output) {
        update_text.setText(output);
    }

    public void display_time() {
        int hours;
        int minutes;
        String hours_string;
        String minutes_string;
        hours = alarm_time_picker.getHour(); // *** Error occurs here
        minutes = alarm_time_picker.getMinute();
        hours_string = String.valueOf(hours);
        minutes_string = String.valueOf(minutes);
        set_alarm_text(hours_string + ":" + minutes_string);
    }
}
你知道为什么4.0.3会出现错误吗? 谢谢

Kx

在API级别23中添加

您的HTC手机使用较低级别的API

只需切换到使用getCurrentHour,虽然不推荐使用,但这两款手机都可以使用


如果你真的想发疯,你可以使用java.lang.Class对象来检查getCurrentHour方法是否存在,比如使用getDeclaredMethod、、java.lang.Class…,但在这种情况下这真的不是必需的。

Hi Sean F,使用不推荐使用的getCurrentHour和getCurrentMinute方法就做到了。它现在可以在模拟器和旧的HTC上工作。谢谢