2013-04-22 132 views
0

我想知道是否有方法來獲取用戶在屏幕上的TimePicker中設置的時間,而不使用對話框。當我只能在屏幕上顯示TimePicker時,我沒有看到創建按鈕的時候會彈出一個TimePickerDialog。即在本教程和許多其他類似的TimePicker教程中可以看到兩個TimePick沒有意義:http://www.mkyong.com/android/android-time-picker-example/有沒有辦法在不使用TimePickerDialog的情況下獲取TimePicker的時間?

我使用picker.getCurrentHour()和picker.getCurrentMinute(),但它只是返回系統的當前時間我按了一個按鈕後。沒有辦法獲得用戶輸入的時間嗎?

這是我點擊一個按鈕後,檢索時間:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_set_time); 
    picker = new TimePicker(SetTimeActivity.this); 
    Button save=(Button)findViewById(R.id.saveAlarmButton); 
    save.setOnClickListener(onSave);     
} 

private View.OnClickListener onSave=new View.OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     hour=picker.getCurrentHour(); 
     min=picker.getCurrentMinute(); 

     System.out.println(hour + " : " + min);   
    } 
}; 


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".SetTimeActivity" > 

<Button 
    android:id="@+id/saveAlarmButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/timePicker" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="28dp" 
    android:text="Save" /> 

<TimePicker 
    android:id="@+id/timePicker" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="32dp" /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="26dp" 
    android:text="Set time for alarm" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

</RelativeLayout> 

但它只是給我的當前時間。

+0

我不知道爲什麼不工作,我會看看的TimePickerDialog源,看看它的工作方式不同,但僅僅從一眼就可以看出它的工作方式完全相同。 – Eluvatar 2013-04-22 20:01:56

+0

您正在創建未添加到佈局的選取器。這就是爲什麼你獲得當前時間。 – andrew 2013-04-22 20:05:54

+0

對不起,我不明白。選擇器在那裏......我正在看和觸摸它。從字面上看。 – 2013-04-22 20:07:18

回答

1

你的代碼應該正常工作。當您嘗試通過號碼輸入輸入日期時,可能會出現此問題。這是由於NumberPicker更新,它是做選擇器失去焦點。所以,你可以嘗試,以確保選擇器失去重點,所以它會消耗當前用戶輸入:

picker.clearFocus(); 
hour=picker.getCurrentHour(); 
min=picker.getCurrentMinute(); 
+0

不起作用:S – 2013-04-22 19:50:49

0

picker classes的定義是,它會打開一個對話框來撿東西:

Android提供的控制,爲用戶選擇一個時間或選擇一個日期作爲 準備使用的對話框。

當然,你總是可以嘗試其他的解決方案,爲您提供定製的採摘,並得到他們的佈局,例如this onehereherehere

這樣,您可以將選擇器的佈局放在任何地方,無需任何對話。

0

您可以將小部件添加到任何其他活動中。你可以得到這樣的日期/時間:

// Format date and time from pickers 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.YEAR, datePicker.getYear()); 
    calendar.set(Calendar.MONTH, datePicker.getMonth()); 
    calendar.set(Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth()); 
    calendar.set(Calendar.HOUR_OF_DAY, timePicker.getCurrentHour()); 
    calendar.set(Calendar.MINUTE, timePicker.getCurrentMinute()); 
    calendar.set(Calendar.SECOND, 0); 
    calendar.set(Calendar.MILLISECOND, 0); 
+0

正如問題中提到的,我的問題是它返回系統時間而不是選擇時間。 – 2013-04-22 19:48:51

相關問題