您好我是Android开发的新手我正在开发一个应用程序,它需要从timePicker获取小时和分钟所以我这样做是为了得到它:
public class MainActivity extends Activity {
TimePicker timePicker;
int hour, changedHour;
int minute, changedMinute;
TextView tv, tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = (TextView) findViewById(R.id.textView1);
tv1 = (TextView) findViewById(R.id.textView2);
timePicker = (TimePicker) findViewById(R.id.timePicker1);
setCurrentTime();
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker arg0, int hourOfDay,
int minuteOf) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Time set!",
Toast.LENGTH_SHORT).show();
changedHour = hourOfDay;
changedMinute = minuteOf;
tv.setText("Hour of Day is " + changedHour + " and Minute is "
+ changedMinute);
}
});
tv1.setText("Hour of Day is " + changedHour + " and Minute is "
+ changedMinute);
}
public void setCurrentTime() {
// TODO Auto-generated method stub
final Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(minute);
}`
问题出在这里
changedHour = hourOfDay;
changedMinute = minuteOf;
tv.setText("Hour of Day is " + changedHour + " and Minute is "
+ changedMinute);
我得到了更改的时间,我把它设置为小时将在hourOfDay = changedHour
并且在方法之外的同一分钟当我尝试使用变量时问题是它设置为0 HERE
tv1.setText("Hour of Day is " + changedHour + " and Minute is "
+ changedMinute);
请帮助我!
答案 0 :(得分:0)
在您使用changedHour
打印changedMinute
或tv1.setText
变量之前,您实际上从未实际分配过onTimeChanged
或void
变量,因为void
很可能没有changedHour
。从那时起就被解雇了。出于这个原因,他们的默认值为0,因为他们尚未分配任何其他内容。
无论如何,您无法从changedMinute
函数中返回值。根据定义,setCurrentTime
缺少类型。
如何解决这个问题取决于您希望代码的确切工作方式。阻力最小的路径是在public void setCurrentTime() {
// TODO Auto-generated method stub
final Calendar c = Calendar.getInstance();
hour = c.get(Calendar.HOUR_OF_DAY);
minute = c.get(Calendar.MINUTE);
// NEW CODE
changedHour = hour;
changedMinute = minute;
// END NEW CODE
timePicker.setCurrentHour(hour);
timePicker.setCurrentMinute(minute);
}
内设置changedHour/Minute
和onTImeChanged
,例如
tv1.setText
你可以通过其他机制返回小时和分钟(返回结构或使用参数),但考虑到你在hour
回调中更新了minute
,它可能不适合现有的流程。
重新阅读时,这可能只是因为您在setCurrentTime
中使用了错误的变量。您在changedHour
中分配了类变量changedMinute
和tv1.setText("Hour of Day is " + hour + " and Minute is "
+ minute);
,因此您可以打印而不是{{1}}和{{1}},例如。
{{1}}