无法在我的代码中访问 DatePicker.ValidationCallback
Can't access DatePicker.ValidationCallback in my code
我有一个扩展 DialogFragment 的简单 DatePickerFragment。我想设置一个验证回调,这样我就可以在选择了无效日期时阻止 "OK" 被选中。我首先尝试了 setMaxDate 并将无效的选择变灰,但仍然允许选择它们并按下确定。所以我希望设置验证回调是解决方案。
abstract public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public DatePickerDialog datePickerDialog;
// public DatePickerFragment() {
//
// }
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
DatePicker datePicker = datePickerDialog.getDatePicker();
datePicker.setMaxDate(c.getTimeInMillis());
// this won't resolve!
datePicker.setValidationCallback( xxx );
return datePickerDialog;
}
}
我不明白为什么我无法访问或引用 android.widget.DatePicker.ValidationCallback 或代码中的任何相关位。如果我按 CTRL+B 查看 DatePickerDialog,我可以看到它导入它并引用这些字段。一切似乎都是 public。但我什至无法解决导入问题。有什么问题吗?这是最新 Android Studio 的全新安装,我的 gradle 文件如下所示:
dependencies {
// Include local libraries
compile fileTree(dir: 'libs', include: ['*.jar'])
// Android support libraries
compile 'com.android.support:support-v4:22.1.1'
compile 'com.android.support:support-v13:22.1.1'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:cardview-v7:22.1.1'
}
AndroidStudio 带我去的DatePickerDialog.java的路径是E:\src\Android\sdk\sources\android-22\android\app\DatePickerDialog.java。结合 gradle 设置让我相信我正在查看的所有内容都应该是 API 22...我在这里完全迷失了。有什么想法吗?
谢谢!
这是在 API 版本 21 左右引入的。如果您的 MinSDK 版本较低,您将看不到该功能。
不过,我只是通过从头开始创建示例项目并将 min/max SDK 设置为 22 来对此进行测试,但我仍然看不到该方法。这可能是 Android Studio 中的错误。
我有一个扩展 DialogFragment 的简单 DatePickerFragment。我想设置一个验证回调,这样我就可以在选择了无效日期时阻止 "OK" 被选中。我首先尝试了 setMaxDate 并将无效的选择变灰,但仍然允许选择它们并按下确定。所以我希望设置验证回调是解决方案。
abstract public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public DatePickerDialog datePickerDialog;
// public DatePickerFragment() {
//
// }
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
DatePicker datePicker = datePickerDialog.getDatePicker();
datePicker.setMaxDate(c.getTimeInMillis());
// this won't resolve!
datePicker.setValidationCallback( xxx );
return datePickerDialog;
}
}
我不明白为什么我无法访问或引用 android.widget.DatePicker.ValidationCallback 或代码中的任何相关位。如果我按 CTRL+B 查看 DatePickerDialog,我可以看到它导入它并引用这些字段。一切似乎都是 public。但我什至无法解决导入问题。有什么问题吗?这是最新 Android Studio 的全新安装,我的 gradle 文件如下所示:
dependencies {
// Include local libraries
compile fileTree(dir: 'libs', include: ['*.jar'])
// Android support libraries
compile 'com.android.support:support-v4:22.1.1'
compile 'com.android.support:support-v13:22.1.1'
compile 'com.android.support:appcompat-v7:22.1.1'
compile 'com.android.support:recyclerview-v7:22.1.1'
compile 'com.android.support:cardview-v7:22.1.1'
}
AndroidStudio 带我去的DatePickerDialog.java的路径是E:\src\Android\sdk\sources\android-22\android\app\DatePickerDialog.java。结合 gradle 设置让我相信我正在查看的所有内容都应该是 API 22...我在这里完全迷失了。有什么想法吗?
谢谢!
这是在 API 版本 21 左右引入的。如果您的 MinSDK 版本较低,您将看不到该功能。
不过,我只是通过从头开始创建示例项目并将 min/max SDK 设置为 22 来对此进行测试,但我仍然看不到该方法。这可能是 Android Studio 中的错误。