使用时间选择器获取时间并使用 Toast 显示它,代码不起作用
Getting time using time picker and show it using Toast, code doesn't work
我正在尝试一个简单的代码,该代码显示使用 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
抱歉,也许我应该详细说明我的问题:
为什么我的代码不起作用?
目前我不需要解决方案,我只是想知道这不起作用的原因?
谢谢。
尝试使用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();
}
});
您可以尝试使用
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: 顺便说一句,确保你按下显示所选时间的部分,吐司会弹出
编辑
如果您希望它可点击,请将以下行添加到 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();
}
});
我正在尝试一个简单的代码,该代码显示使用 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
抱歉,也许我应该详细说明我的问题:
为什么我的代码不起作用?
目前我不需要解决方案,我只是想知道这不起作用的原因?
谢谢。
尝试使用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();
}
});
您可以尝试使用
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: 顺便说一句,确保你按下显示所选时间的部分,吐司会弹出
编辑 如果您希望它可点击,请将以下行添加到 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();
}
});