android - 如何读取 TimePicker 选择的值?

标签 android timepicker

我遵循了这个指南:http://developer.android.com/guide/topics/ui/controls/pickers.html 我不太确定这是怎么回事(我是 android 开发者的新手) 我有一个包含我的 mainActivity 类和 timepicker 类的包。 我希望在设置时间后,将其写入 mainActivity 的变量,或者反过来,“onTimeSet”将值保存为类变量并从我的 mainActivity 中读取这些变量。 我该怎么做?

这是我的 fragment 类:

package com.example.remoteswitch;

import java.util.Calendar;

import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.widget.TimePicker;

public class TimePickerFragment extends DialogFragment
                            implements TimePickerDialog.OnTimeSetListener {

    int hour, min;
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute, true);
    }

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        // Do something with the time chosen by the user
        hour = hourOfDay;
        min = minute;

    }
}

在我的 MainActivity 类中,我有一个在按下按钮时调用的函数:

public void showTimePickerDialog(View v) {
            //DialogFragment newFragment = new TimePickerFragment();
            TimePickerFragment newFragment = new TimePickerFragment();
            newFragment.show(getFragmentManager(), "timePicker"); 

            //todo: read values from timePicker
            int pickerHour = 0, pickerMin = 0;
            //some manipulations on this data
            }
        }

最佳答案

重写
我结合了我们讨论的开发人员指南中的两个示例。现在您应该能够理解如何将用户从 TimePickerFragment 中选择的时间发送回更有用的 Activity。 (我对第一个示例做了一些更改。)

时间选择器 fragment :

public class TimePickerFragment extends DialogFragment {
    // Notice I removed "implements OnTimeSetListener" and changed the variables

    private Activity mActivity;
    private OnTimeSetListener mListener;

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = activity;

        // This error will remind you to implement an OnTimeSetListener 
        //   in your Activity if you forget
        try {
            mListener = (OnTimeSetListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement OnTimeSetListener");
        }
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        hour = c.get(Calendar.HOUR_OF_DAY);
        minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it

        // I made a couple changes here!
        return new TimePickerDialog(mActivity, mListener, hour, minute,
                DateFormat.is24HourFormat(mActivity));
    }
}

主要 Activity :

// add "implements OnTimeSetListener" to "public class MainActivity ..."
private int pickerHour = 0;
private int pickerMin = 0;

// onCreate() and your other methods...

public void showTimePickerDialog(View v) {
    TimePickerFragment newFragment = new TimePickerFragment();
    newFragment.show(getFragmentManager(), "timePicker"); 
}    

@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
    // Do something with the time chosen by the user
    pickerHour = hourOfDay;
    pickerMin = minute;
}

关于android - 如何读取 TimePicker 选择的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15027987/

相关文章:

android - 如果 SQLite 中存在,则获取第一行数据

java - 将 TimePicker 数据保存在 sqlite 数据库中

javascript - 2 jQuery Timepickers -- 如何区分 (jquery.timepicker)

Android:关注 TimePicker 元素

android - Android 上的即时消息?

android - 添加动态 View ——布局引力问题

javascript - 在 Bootstrap timepicker 中更改小时格式

Android `getSystemService(Context.NSD_SERVICE)` 需要很长时间

android - 如何正确实现TimePicker

ios - 无法快速将时间选择器时间添加到文本字段