【问题标题】:Update the date in an edittext - Android Studio更新编辑文本中的日期 - Android Studio
【发布时间】:2021-09-11 06:40:19
【问题描述】:

我想将 DatePicker 的日期放在 EditText 中,并在此人更改日期时不断更新此编辑文本。有人帮帮我吗?

这是我的代码:

private View view;

    private Button next;
    private EditText birthday;
    private DatePicker datePicker;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_birthday, container, false);

        initWidgets();

        int day = datePicker.getDayOfMonth();
        int month = datePicker.getMonth();
        int year = datePicker.getYear();

        birthday.setText(day + "/" + month + "/" + year);

        return view;
    }

    private void initWidgets() {
        next = view.findViewById(R.id.bt5);
        birthday = view.findViewById(R.id.kz5);
        datePicker = view.findViewById(R.id.date_picker);
    }

xml代码:

<DatePicker
            android:id="@+id/date_picker"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:datePickerMode="spinner"
            android:layout_marginBottom="40dp"
            android:layout_alignParentBottom="true"
            android:calendarViewShown="false"/>

【问题讨论】:

    标签: javascript android android-studio


    【解决方案1】:

    尝试使用下面不需要 xml 的代码,它会帮助你。

    public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
    private Button button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
    
        button = findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
          DatePickerDialog datePickerDialog = new DatePickerDialog(this, this, 2021, 1, 1);
          datePickerDialog.show();
        }
      });
    }
    
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        Log.d("selectedDate",""+year+"-"+month+"-"+dayOfMonth);
    }
    }
    

    【讨论】:

      【解决方案2】:

      首先,在您的布局中将 edittext 设置为 android:enabled="false" 或以编程方式将其设置为 edtDate.setEnabled(false);

      并设置点击事件以打开日期选择器。

      edtDate.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          try {
              DatePickerDialog datePickerDialog = new DatePickerDialog(getContext(),
                      new DatePickerDialog.OnDateSetListener() {
                          @Override
                          public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                              edtDate.setText(String.format("%02d", dayOfMonth) + "-" + String.format("%02d", (monthOfYear + 1)) + "-" + String.format("%02d", year));
                          }
                      }, mYear, mMonth, mDay);
              datePickerDialog.show();
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      });
      

      【讨论】:

      • 是否可以在不打开对话框的情况下执行此操作?因为我通过 xml 将日历置于“微调器”模式
      • 是的,为您的日期选择器定义一个监听器,您将在“onDateSet”函数中收到更新的数据。
      【解决方案3】:

      你可以添加一个监听器来监听 DatePicker 上的变化,像这样:

          datePicker.init(2021, 1, 1, new DatePicker.OnDateChangedListener() {
              @Override
              public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                  // use year month day here
              }
          });
      

      【讨论】:

      • 好的,我做到了,我试着做birthday.setText(year + monthOfYear + dayOfMonth);,但是应用程序关闭了,你能告诉我为什么吗?
      • 年月日为整数,需要转成字符串,如"" + year + "/" + monthOfYear+ "," + dayOfMonth
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-27
      • 2020-05-13
      • 2017-05-23
      • 2011-12-07
      • 2017-07-27
      • 2015-12-25
      • 1970-01-01
      相关资源
      最近更新 更多