web-dev-qa-db-ja.com

EditTextのポップアップDatePicker

EditTextでポップアップするDatePickersに関する他の質問をここで調べようとしましたが、機能させるのに問題がありました。

setOnClickListenerまたはsetOnTouchListenerを使用できる例を見てきましたが、どちらが最適ですか。

また、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);
    }


}
13
Mark O'Sullivan

私は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();  }
    });

これを試してください...あなたの考えをコメントしてください...ありがとう..

50
Srinivasan
/* 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();

            }
        });
1
Inderjeet Singh

古い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();

        }
    });
0
CrandellWS