2015-05-12 116 views
2

我有一個editfield,當我點擊它時,日期選擇器會打開,但我無法在第一次點擊時彈出日期選擇器彈出。如果我第一次點擊編輯區域,日期選擇器不會出現。當我點擊第二或第三次時,它正在顯示。這裏是我的代碼:日期選擇器第一次點擊時沒有顯示

public class MainActivity extends Activity implements OnClickListener { 

    private Calendar calendar; 
    private int day; 
    private int month; 
    private int year; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.activity);  

      date = (EditText) findViewById(R.id.date); 
      calendar = Calendar.getInstance(); 
      day = calendar.get(Calendar.DAY_OF_MONTH); 
      month = calendar.get(Calendar.MONTH); 
      year = calendar.get(Calendar.YEAR); 
      date.setOnClickListener(this); 
    } 

    @Override 
    protected Dialog onCreateDialog(int id) { 
      // TODO Auto-generated method stub 
      return new DatePickerDialog(this, datePickerListener, year, month, day);  
    } 

    private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() {    
     public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { 

     date.setText(selectedYear + " - " + (selectedMonth + 1) + " - " + selectedDay); 
     } 
    }; 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     showDialog(0); 
    } 
} 
+0

的ShowDialog()方法已很長一段時間了,請考慮使用DilaogFragment代替 – Stepango

回答

3

在你的佈局XML,這樣做在你的edittext-

android:focusableInTouchMode="false" 

這將工作

+0

這對我的作品,謝謝。 –

0

你真的不需要一個活動來創建一個對話框。只需創建一個XML 並使用AlertDialog。

final View dialogView = View.inflate(this, R.layout.dialog_date_picker, null); 
final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); 

DatePicker datePicker = (DatePicker) dialogView.findViewById(R.id.date_picker); 
     datePicker.init(mCalendar.get(Calendar.YEAR),mCalendar.get(Calendar.MONTH),mCalendar.get(Calendar.DAY_OF_MONTH),null); 

dialogView.findViewById(R.id.date_time_set).setOnClickListener(new View.OnClickListener() 
{ 
    @Override 
    public void onClick(View view) 
    { 
    alertDialog.dismiss(); 
    } 
}); 

alertDialog.setView(dialogView); 
alertDialog.show(); 

這裏是XML(dialog_date_picker.xml):

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:padding="8dp" 
    android:layout_height="match_parent"> 

    <DatePicker 
     android:id="@+id/date_picker" 
     android:layout_width="match_parent" 
     android:calendarViewShown="true" 
     android:spinnersShown="false" 
     android:layout_weight="4" 
     android:layout_height="0dp" /> 

    <Button 
     android:id="@+id/date_time_set" 
     android:layout_weight="1" 
     android:layout_width="match_parent" 
     android:text="Set" 
     android:layout_height="0dp" /> 

</LinearLayout> 
0

如果您正在編程創建編輯文本,您可以使用動態設置。

... 
EditText editText = new EditText(); 
editText.setFocusableInTouchMode(false); 
... 
相關問題