Android 中的 datepickerdialog 对话框
原文:https://www.geeksforgeeks.org/datepickerdialog-in-android/
安卓日期选择器是一个用户界面控件,用于在安卓应用中按日、月、年选择日期。日期选择器用于确保用户选择有效的日期。在具有两种模式的安卓日期选择器中,第一种显示完整的日历,第二种显示微调视图中的日期。您可以通过两种方式创建日期选择器控件,要么在 XML 文件中手动创建,要么以编程方式在活动文件中创建。我们将使用 Java 通过编程来实现。
方法
第一步:创建新项目
在安卓工作室创建新项目请参考 【如何在安卓工作室创建/启动新项目】 。注意,选择 Java 作为编程语言。
第二步:使用 activity_main.xml 文件
在 activity_main.xml 文件中,仅添加一个文本视图以显示所选日期,并添加一个按钮以从日期选择日志中选择日期。下面是 activity_main.xml 文件的完整代码。
可扩展标记语言
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Date" />
<Button
android:id="@+id/btPickDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvDate"
android:layout_centerInParent="true"
android:text="Pick Date" />
</RelativeLayout>
第三步:创建一个新的类并命名为日期选择器
现在创建一个新的类,方法是转到该包,右键单击它,选择新建,然后选择 Java 类。将类命名为日期选择器,将其超类命名为对话片段(androidx . fragment . app . DialogFragment),然后单击确定。
现在覆盖一个方法 onCreateDialog ,而不是返回 super.onCreateDialog,返回一个 DatePickerDialog 的实例。
@祖父 Null
@覆盖
公共对话框 onCreateDialog(@可空包 savedInstanceState){ 0
返回 new datepicker dialog();
}
现在将参数传递给 DatePickerDialog 的构造函数,该构造函数需要上下文、日期设置侦听器、年、月、日。
- 传递上下文的 getActivity 方法。
- 对于 OnDateSetListener,请将 getActivity 方法类型转换为 OnDateSetListener。
- 对于年、月和日月,创建一个日历类的实例,并将年、月和日月分配给 int 类型的变量。
- 传递年、月和日期月,以便当日期选择日志打开时,它具有当前日期。
@祖父 Null
@覆盖
公共对话
oncreatedialog(@ null bundle savedinstancestate)
{
calendar = calendar . getinstance();
int year = mCalendar.get(Calendar。年份);
int month = Mcalendar . get(Calendar。MONTH);
int dayOfMonth = Mcalendar . get(Calendar。月日);
返回新日期选择器对话框(
getActivity(),
(DatePickerDialog.OnDateSetListener)getActivity(),
年、月、日;
}
DatePicker.java级的完整代码如下。
Java 语言(一种计算机语言,尤用于创建网站)
package tutorials.droid.datepicker;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import java.util.Calendar;
public class DatePicker extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Calendar mCalendar = Calendar.getInstance();
int year = mCalendar.get(Calendar.YEAR);
int month = mCalendar.get(Calendar.MONTH);
int dayOfMonth = mCalendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), (DatePickerDialog.OnDateSetListener)
getActivity(), year, month, dayOfMonth);
}
}
第四步:使用 MainActivity.java 文件
现在在MainActivity.java文件中,创建一个文本视图和按钮的对象,并用它们的 id 映射组件(文本视图和按钮)。
文本视图 tvdate
按钮 btpickdate
tvdate = findviewbyid(r . id . tvdate):
btpick date = findviewbyid(r . id . btpick date);
实现 DatePickerDialog 类的 OnDateSetListener ,并覆盖 onDateSet() 方法。 onDateSet() 方法将在电视日期文本视图中设置选择后的日期。
@覆盖
公共无效日期集(日期选择器视图,年内、月内、月内)
{
//创建日历实例
calendar = calendar . getinstance();
//设置日历实例的静态变量
日历集。年份,年份);
日历集。月,月);
日历集。年月日;
//获取字符串形式的日期
string selected data = date format . get file instance(date format)。(已满)。格式(MC lendar . gettime());
//将文本视图设置为选定的日期字符串
tvDate.setText(已选取):
}
在 onClick() 方法中实现设置 btPickDate 的。创建一个日期选择器的实例(我们的类)。使用实例的显示方法,并传递getSupportfragmentManager()和一个标记。MainActivity.java文件的完整代码如下。
Java 语言(一种计算机语言,尤用于创建网站)
package tutorials.droid.datepicker;
import android.app.DatePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.text.DateFormat;
import java.util.Calendar;
public class MainActivity extends AppCompatActivity implements DatePickerDialog.OnDateSetListener {
TextView tvDate;
Button btPickDate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvDate = findViewById(R.id.tvDate);
btPickDate = findViewById(R.id.btPickDate);
btPickDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Please note that use your package name here
tutorials.droid.datepicker.DatePicker mDatePickerDialogFragment;
mDatePickerDialogFragment = new tutorials.droid.datepicker.DatePicker();
mDatePickerDialogFragment.show(getSupportFragmentManager(), "DATE PICK");
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar mCalendar = Calendar.getInstance();
mCalendar.set(Calendar.YEAR, year);
mCalendar.set(Calendar.MONTH, month);
mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String selectedDate = DateFormat.getDateInstance(DateFormat.FULL).format(mCalendar.getTime());
tvDate.setText(selectedDate);
}
}
*输出:*在仿真器上运行
https://media.geeksforgeeks.org/wp-content/uploads/20200901000219/date-picker.mp4
版权属于:月萌API www.moonapi.com,转载请注明出处