首页 > 解决方案 > 如何从另一个班级的 timePicker 获取时间?

问题描述

public class TimePickerClass  extends Activity{

public TimePicker mTimePicker;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_time_picker_class);
Button saveTimeButton;
mTimePicker = (TimePicker) findViewById(R.id.timePicker);
mTimePicker.setIs24HourView(true);
saveTimeButton = (Button) findViewById(R.id.next_button);
saveTimeButton.setOnClickListener(v -> {
    getTime();
});

  public String getTime(){
//TODO
int hour;
int minute;
hour = mTimePicker.getHour();
minute = mTimePicker.getMinute();
String message;
message = "Time:" + hour +" : " + minute;
return message;
}

你好!我有一个类,在其中使用 TimePicker 我得到用户选择的时间。我正在尝试这样做:

TimePickerClass time = new TimePickerClass();
String userTime = time.getTime();

但这不起作用,应用程序已关闭。那么如何实现呢?错误如下:

FATAL EXCEPTION: main
          Process: com.gfc.glanceclock, PID: 32256
          java.lang.NullPointerException: Attempt to invoke virtual method 'int android.widget.TimePicker.getHour()' on a null object reference

标签: androidnullpointerexceptiontimepicker

解决方案


您正在尝试自己创建活动,这就是为什么没有调用必要的生命周期方法并且您得到NullPointerException.

如果您想从 TimePickerClass 活动中获取时间,请启动它以获得结果,例如:

Intent intent = new Intent(context, TimePickerClass.class)
startActivityForResult(intent, REQUEST_CODE)

以及 TimePickerClass 活动中的设置结果:

mTimePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() {

            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                 Intent intent = new Intent();
                 intent.putExtra("time", time.getTime());
                 setResult(RESULT_OK, intent);
                 finish();
            }
        });

然后你可以处理结果

protected void onActivityResult(int requestCode, int resultCode, Intent data)

方法。

你可以在这里阅读更多关于它的信息。


推荐阅读