2013-07-23 54 views
12

一直试图看看这里的其他问题关于DatePickers弹出EditText,但我有问题得到它的工作。弹出DatePicker的EditText

我看过例子,你可以使用setOnClickListenersetOnTouchListener,哪一个最好?

另外我见过DatePicker有几种不同的设计,你如何改变设计?

下面是我的代码到目前为止,尝试使用其他示例中的代码,但无法使其工作。

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.EditText; 
import android.widget.TextView; 


/** 
* Created by MOS182 on 7/21/13. 
*/ 
public class AddReminder extends Activity { 

    TextView Title, Amount, PaymentDate, ReminderDate, ReminderTime; 
    EditText eTitle, eAmount, ePaymentDate, eReminderDate, eReminderTime; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 


     super.onCreate(savedInstanceState); 
     setContentView(R.layout.reminders_dialog); 
     initializeVariables(); 
    } 



    private void initializeVariables() 
    { 
     Title = (TextView) findViewById(R.id.tvTitle); 
     Amount = (TextView) findViewById(R.id.tvAmount); 
     PaymentDate = (TextView) findViewById(R.id.tvPaymentDate); 
     ReminderDate = (TextView) findViewById(R.id.tvReminderDate); 
     ReminderTime = (TextView) findViewById(R.id.tvReminderTime); 
     eTitle = (EditText) findViewById(R.id.etTitle); 
     eAmount = (EditText) findViewById(R.id.etAmount); 
     ePaymentDate = (EditText) findViewById(R.id.etPaymentDate); 
     eReminderDate = (EditText) findViewById(R.id.etReminderDate); 
     eReminderTime = (EditText) findViewById(R.id.etReminderTime); 
    } 


} 
+0

http://developer.android.com/guide/topics/ui/controls/ pickers.html。检查它有代码片段的文档。另外**你如何改变设计**请详细说明。 – Raghunandan

+0

你有没有试过DatePickerDialog? – R9J

+0

@ R9j我在看其他例子时试过,无法正常工作,就像我不知道如何正确设置它 –

回答

49

我已经使用setOnClickListenerEditText方法来显示一个DatePicker

然后在xml文件中设置EditText属性android:focusable="false"。这样就可以避免焦点和虚拟键盘。

yourEditText.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      //To show current date in the datepicker 
      Calendar mcurrentDate=Calendar.getInstance(); 
      mYear=mcurrentDate.get(Calendar.YEAR); 
      mMonth=mcurrentDate.get(Calendar.MONTH); 
      mDay=mcurrentDate.get(Calendar.DAY_OF_MONTH); 

      DatePickerDialog mDatePicker=new DatePickerDialog(**YourActivityName**.this, new OnDateSetListener() {     
       public void onDateSet(DatePicker datepicker, int selectedyear, int selectedmonth, int selectedday) { 
        // TODO Auto-generated method stub      
        /*  Your code to get date and time */ 
       } 
      },mYear, mMonth, mDay); 
      mDatePicker.setTitle("Select date");     
      mDatePicker.show(); } 
    }); 

试试这个...评论你的想法...感谢..

+0

您是如何在调用setOnClickListener方法后显示DatePicker的? –

+0

我认为你需要完整的代码..我会很快发布.. – Srinivasan

+0

只有一个错误,“无法解析符号'AddNewMessage'”,我该如何摆脱这个错误? –

0
/* create calndar object */ 
    Calendar myCalendar = Calendar.getInstance(); 
/* find textview*/ 
date = (TextView) findViewById(R.id.stdate); 
/* and copy the fallowing code*/ 
final DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { 
       @Override 
      public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) { 
       // TODO Auto-generated method stub 
       myCalendar.set(Calendar.YEAR, year); 
       myCalendar.set(Calendar.MONTH, monthOfYear); 
       myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth); 
       String myFormat = "dd/MMM/yyyy"; //In which you need put here 
       SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.UK); 

       date.setText(sdf.format(myCalendar.getTime())); 

      } 

     }; 


     date.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new DatePickerDialog(MainActivity.this, datePickerListener, myCalendar 
         .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 

      } 
     }); 
0

对于旧的API,即我还是尽力支持16 ...所以:

http://javapapers.com/android/android-datepicker/

您可以使用实现DatePickerDialog作为DialogFragment所示例:

public static class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

    // Thanks to -> http://javapapers.com/android/android-datepicker/ 
    EditText mEditText; 
    public SelectDateFragment(EditText mEditText){ 
     this.mEditText = mEditText; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final Calendar calendar = Calendar.getInstance(); 
     int yy = calendar.get(Calendar.YEAR); 
     int mm = calendar.get(Calendar.MONTH); 
     int dd = calendar.get(Calendar.DAY_OF_MONTH); 
     return new DatePickerDialog(getActivity(), this, yy, mm, dd); 
    } 

    public void onDateSet(DatePicker view, int yy, int mm, int dd) { 
     populateSetDate(mEditText, yy, mm+1, dd); 
    } 
} 

public void selectDate() { 
    DialogFragment newFragment = new SelectDateFragment(editText); 
    newFragment.show(getFragmentManager(), "DatePicker"); 
} 
public static void populateSetDate(EditText mEditText, int year, int month, int day) { 
    mEditText.setText(month+"/"+day+"/"+year); 
} 

在你的活动设置你EDITTEXT值要求:

private EditText editText; 
//... 

连接的onclick监听器:

editText.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      selectDate(); 

     } 
    });