【问题标题】:How to display date in edittext when using Fragments使用片段时如何在edittext中显示日期
【发布时间】:2014-01-07 11:24:16
【问题描述】:

我通过扩展 Fragment 创建了一个片段,如下所示:

public class MyFragement extends Fragment
{

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
{

View view = inflater.inflate(R.layout.my_fragment_layout, container, false);


return view;

}

我的布局有一个编辑文本。当我单击edittext 时,我想显示日期选择器。从日期选择器中选择日期后,所选日期应出现在编辑文本中。

我怎样才能做到这一点。请帮我提供一些示例代码。

【问题讨论】:

标签: android android-fragments datepicker


【解决方案1】:

你可以在片段类的onCreate中编写这段代码

 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.getDatePicker().setCalendarViewShown(false);
                    mDatePicker.setTitle("Select date");                
                    mDatePicker.show();  }
            });

【讨论】:

  • 这行得通。非常感谢。但在日期选择器对话框中,它同时显示日期选择器和日历。请帮助我如何只显示日期选择器而不显示日历。
  • mDatePicker.getDatePicker().setCalendarViewShown(false);在 DatePickerDialog 的对象声明下方添加这一行。如果对您有帮助,请标记答案。谢谢
【解决方案2】:

尝试以下方式:

onCreatView() 之前

  /** Callback received when the user "picks" a departure date in the dialog **/
    private DatePickerDialog.OnDateSetListener pDateSetListener =
            new DatePickerDialog.OnDateSetListener() {

                public void onDateSet(DatePicker view, int year, 
                                      int monthOfYear, int dayOfMonth) {
                    pYear = year;
                    pMonth = monthOfYear;
                    pDay = dayOfMonth;
                    updateDisplay();                   
                }
            };

/** Updates the date in the departure date **/
    private void updateDisplay() {
        dep_date.setText(
            new StringBuilder()
                    // Month is 0 based so add 1
                    .append(padDate(pDay)).append("/")
                    .append(padDate(pMonth + 1)).append("/")                    
                    .append(pYear).append(" "));

    }

onCreateView() 内部

EditText dep_date= (EditText ) view.findViewById(R.id.editText1);

    /** Listener for click event of the departure date edit text **/
        dep_date.setOnTouchListener(new OnTouchListener()
        {

            @Override
            public boolean onTouch(View arg0, MotionEvent arg1) {
                // TODO Auto-generated method stub
                showDialog(DATE_DIALOG_ID);
                return false;
            }
        });

OutSide onCreateView()

/** Create a new dialog for date picker */
@Override
protected Dialog onCreateDialog(int id) {
    switch (id) {
    case DATE_DIALOG_ID:
        return new DatePickerDialog(this, pDateSetListener, pYear, pMonth, pDay);

    }
    return null;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-30
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    相关资源
    最近更新 更多