使用时间选择器获取时间并使用Toast显示它,代码不起作用

时间:2015-08-01 08:09:25

标签: android toast timepicker

我正在尝试一个简单的代码,显示使用Toast和时间选择器选择的时间,但没有任何反应,没有错误,日期选择器也会发生同样的情况。

以下是代码:

public class MainActivity extends ActionBarActivity {
TimePicker tP;

public  void clickMe(View V){
    Toast.makeText(this,"Time Selected: " + (tP.getCurrentHour()) + ":" + tP.getCurrentMinute(),Toast.LENGTH_LONG).show();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tP = (TimePicker)findViewById(R.id.timePicker);
}

我只在布局中制作了一个时间选择器,并onclick:clickMe

注意:这应该有效,因为我从教师那里获取了这段代码。

修改

这是布局:

<TimePicker
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/timePicker"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:onClick="clickMe" />

修改2

对不起,也许我应该详细说明我的问题:

为什么我的代码不能正常工作?

现在我不需要解决方案我只想知道为什么这不起作用?

感谢。

3 个答案:

答案 0 :(得分:0)

尝试使用setOnTimeChangedListener而不是onClick,如下所示:

 tP = (TimePicker) findViewById(R.id.timePicker);

 tP.setOnTimeChangedListener( new TimePicker.OnTimeChangedListener() {
        @Override
        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                      Toast.makeText(getApplicationContext(),String.valueOf(hourOfDay) + " "+ String.valueOf(minute),Toast.LENGTH_LONG).show();

        }
    });

答案 1 :(得分:0)

您可以尝试使用

public class TimePickerFragment extends DialogFragment implements

        TimePickerDialog.OnTimeSetListener {

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    public void onTimeSet(TimePicker view, int hour, int minute) {

        setTime(timePicker, hour, minute);

    }
}

并将其命名为

DialogFragment newFragment = new TimePickerFragment();

newFragment.show(getChildFragmentManager(), "timePicker");

答案 2 :(得分:0)

编辑2: 顺便说一下,请确保按下显示所选时间的部分,然后会弹出烤面包

<强> 修改   如果您希望它可以点击,请将以下行添加到XML中:

 android:clickable="true"

=============================================== ======================== 替代解决方案: 尝试在调用findViewById之后在onCreate方法中添加OnClickListener,并从布局中删除onClick属性。

    tm = (TimePicker) findViewById(R.id.timepciker_id);
    tm.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(this,"Time Selected: " + (tP.getCurrentHour()) + ":" + tP.getCurrentMinute(),Toast.LENGTH_LONG).show();
        }
    });