如何在android中从void返回一个值

时间:2014-05-15 08:37:18

标签: android-timepicker

您好我是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);

请帮助我!

1 个答案:

答案 0 :(得分:0)

在您使用changedHour打印changedMinutetv1.setText变量之前,您实际上从未实际分配过onTimeChangedvoid变量,因为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/MinuteonTImeChanged,例如

tv1.setText

可以通过其他机制返回小时和分钟(返回结构或使用参数),但考虑到你在hour回调中更新了minute,它可能不适合现有的流程。

重新阅读时,这可能只是因为您在setCurrentTime中使用了错误的变量。您在changedHour中分配了类变量changedMinutetv1.setText("Hour of Day is " + hour + " and Minute is " + minute); ,因此您可以打印而不是{{1}}和{{1}},例如。

{{1}}