0

我似乎無法從timePicker將結果導入editText字段。我遵循Android培訓指南中的示例,我可以在日誌中看到timePicker的結果,但我無法弄清楚如何在文本字段(tvEndTime)中顯示它們。在editText字段中顯示來自timePicker的結果

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()線,我得到一個Eclipse錯誤「不能使靜態引用非靜態字段tvEndTime」。但是我不能將tvEndTime聲明爲靜態的,因爲那時我在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(); 
} 
相關問題