java - 同一 Activity 中 Edittext 的多个日期选择器

标签 java android

在我的应用程序中,我有两个编辑文本,我希望在单击打开的这两个编辑文本日期选择器对话框时在编辑文本中设置两个值。

final DatePickerDialog.OnDateSetListener date = 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);
            updateDOB();
            updateDOA();
        }

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

private void updateDOA() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    doa.setText(sdf.format(myCalendar.getTime()));
}
private void updateDOB() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    spoucedob.setText(sdf.format(myCalendar.getTime()));
}

这是我的代码。当我在一个编辑文本中设置日期时,它会同时更改其他编辑文本的值。请告诉我问题出在哪里... 谢谢。

最佳答案

在类级别声明一个变量:

EditText clickedEditText;

并在点击监听器中将其设置为点击的 EditText:

doa.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        clickedEditText = (EditText) view;
        new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});
spoucedob.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        clickedEditText = (EditText) view;
        new DatePickerDialog(FamilyEditActivity.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

现在你只需要一种方法update():

private void update() {
    String myFormat = "yyyy-MM-dd";
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);
    clickedEditText.setText(sdf.format(myCalendar.getTime()));
}

onDateSet() 中:

final DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,                               int dayOfMonth) {
            myCalendar.set(Calendar.YEAR, year);
            myCalendar.set(Calendar.MONTH, monthOfYear);
            myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            update();
        }
};

关于java - 同一 Activity 中 Edittext 的多个日期选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53724279/

相关文章:

Android: 无法注册 BroadcastReceiver

java - 类似 Django 的 Java 模板系统?

java - GAE + Spring MVC : Saving image file to BlobStore

java - StackOverflowError 在 Java 中是什么意思?它的解决方法是什么?

java - Android & NodeMCU,从服务器接收响应无法正常工作?

java - 近距离在 1 部手机和 2 部平板电脑之间进行通信的最有效方式?

android - 为 MultiUserChat 添加监听器 (aSmack)

java - 使用 Java WebFilter 删除主题标签

java - 通过 Apache Commons Compress 检测压缩类型

android - 在 Android 中,从带有嵌套 json 对象的 json 和带有多个 json 对象的嵌套 json 数组中获取字符串