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);
}
}
私は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(); }
});
これを試してください...あなたの考えをコメントしてください...ありがとう..
/* 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();
}
});
古い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();
}
});