java - 当有人输入过去的日期时,我该如何阻止用户为 Android Studio 执行此操作?

标签 java android datepickerdialog

有没有办法通过使用 if 语句来禁用过去的日期?或者使用 try and catch。

我对此进行了一些研究,并尝试了人们提供的所有代码,但运气不佳。

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;

import java.sql.Time;
import java.text.DateFormat;
import java.util.Calendar;

public class MainActivity extends Activity {
    private TextView OutputLogic;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Spinner spSize = (Spinner)findViewById(R.id.spnSize);
        final Spinner spTopping = (Spinner)findViewById(R.id.spnToppings);

        final EditText etAddress = (EditText)findViewById(R.id.edAddress);

        final Button btTime = (Button)findViewById(R.id.btnTime);
        final Button btDay = (Button)findViewById(R.id.btnDay);
        final Button btSubmit = (Button)findViewById(R.id.btnSubmit);

        OutputLogic = (TextView)findViewById(R.id.tvOutput);

        btDay.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new DatePickerDialog(MainActivity.this, d, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)).show();
            }
        });
    }

    final Calendar c = Calendar.getInstance();
    DateFormat fmtDate = DateFormat.getDateInstance();
    DatePickerDialog.OnDateSetListener d = new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            c.set(Calendar.YEAR, year);
            c.set(Calendar.MONTH, monthOfYear);
            c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            c.set(Calendar.MILLISECOND, c.getMinimum(Calendar.MILLISECOND));

            OutputLogic.setText("The Time of your delivery is " + fmtDate.format(c.getTime()));
        }
    };
} // End of MainActivity

最佳答案

你可以尝试这样的事情:

DatePickerDialog dialog = new DatePickerDialog(MainActivity.this, d, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH));
        dialog.getDatePicker().setMinDate(System.currentTimeMillis());
        dialog.show();

它根本不会在 DatePickerDialog 本身中显示今天日期之前的日期。 希望对您有所帮助。

关于java - 当有人输入过去的日期时,我该如何阻止用户为 Android Studio 执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43796474/

相关文章:

android - 从 Android Material DatePickerDialog 中删除纯色背景

java - 当从特定类调用某个方法时执行 AOP

java - ibm domino 想将大的 xml 字符串保存到富文本字段中,但出现限制错误

android - Android 模拟器的三星系统镜像?

java - 在 Realm 中使用预填充的数据库

android - 日期选择器对话框

android - 从静态内部类设置 Textview 文本

java - 用户完成编辑后的 ​​TextField 监听器? JavaFX

java - 如何更改 Android list 以启动应用程序而不是 Activity ?

javascript - 设计跨平台多内容类型文件格式的最佳方式?