0

Я не могу получить результаты от timePicker в поле editText. Я следовал примеру в руководстве по обучению Android, и я могу видеть результаты от timePicker в журнале, но я не могу понять, как отображать их в текстовом поле (tvEndTime).отображение результатов timePicker в поле editText

public class Setup extends Activity { 

.... 

private final TextView tvEndTime = (TextView) findViewById(R.id.textViewEndTime); 

.... 

public static class TimePickerFragment extends DialogFragment 
    implements TimePickerDialog.OnTimeSetListener { 

    @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, 
     DateFormat.is24HourFormat(getActivity())); 
    } 

    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     // Do something with the time chosen by the user 
     Log.i(TAG, Integer.toString(hourOfDay) + ":" + Integer.toString(minute)); 
     tvEndTime.setText(Integer.toString(hourOfDay) + ":" + Integer.toString(minute)); 
    } 
} 

// show the end time timePicker dialog box fragment when user clicks buttonEndTime 
public void showTimePickerDialog(View v) { 
    DialogFragment newFragment = new TimePickerFragment(); 
    newFragment.show(getFragmentManager(), "timePicker"); 
} 

.... 

В tvEndTime.setText() линии, я получаю сообщение об ошибке Затмение «Не удается сделать статическую ссылку на отсутствия статического поля tvEndTime». Но я не могу объявить tvEndTime как static, потому что тогда я получаю ошибку в объявлении tvEndTime. Что я делаю не так?

+0

Вы пытаетесь установить текст на 'TextView' или на' EditText'? В вашем заголовке говорится, что вы хотите установить текст в «EditText», но ваш код говорит, что вы устанавливаете его на «TextView» ... !!! –

ответ

1

Написать этот код внутри OnClick() событие любой точки зрения вы используете:

  Calendar mcurrentTime = Calendar.getInstance(); 
      int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
      int minute = mcurrentTime.get(Calendar.MINUTE); 

      TimePickerDialog mTimePicker; 
      mTimePicker = new TimePickerDialog(CurrentActivity.this, new TimePickerDialog.OnTimeSetListener() { 
       @Override 
       public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
        editText.setText(selectedHour + ":" + selectedMinute); 
       } 
      }, hour, minute, true); 
      mTimePicker.setTitle("Select Time"); 
      mTimePicker.show(); 

Или:

Просто изменить путь вы устанавливаете текст на EditText:

tvEndTime.setText(selectedHour+" : "+selectedMinute); 

Исправления: Сделайте свой TextView tvEndTime как переменный классом для класса Setup

+0

Я, наконец, получил его для работы, переместив объявление tvEndTime в функцию onTimeSet. –

0

ли, как это tvEndTime.setText(String.valueof(hourOfDay)) для всех других следовать такой же подход

1

Изменения tvEndTime.setText аргументы не имели никакого эффекта. Я получил его на работу, добавив декларацию tvEndTime в функции onTimeSet (SetEndTime вызывается, когда пользователь нажимает на кнопку):

public void SetEndTime(View v) { 
    Calendar mcurrentTime = Calendar.getInstance(); 
    int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY); 
    int minute = mcurrentTime.get(Calendar.MINUTE); 

    TimePickerDialog mTimePicker; 
    mTimePicker = new TimePickerDialog(Setup.this, new TimePickerDialog.OnTimeSetListener() { 
     @Override 
     public void onTimeSet(TimePicker timePicker, int selectedHour, int selectedMinute) { 
      TextView tvEndTime = (TextView) findViewById(R.id.textViewEndTime); 
      tvEndTime.setText(selectedHour + ":" + selectedMinute); 
     } 
    }, hour, minute, true); 
    mTimePicker.setTitle("Select Time"); 
    mTimePicker.show(); 
}