java - DatepickerDialog 不在 Textview 中添加日期
问题描述
我有个问题。我在 Android Studio 中创建了一个 DatePickerDialog,但是当显示 Datepickerdialog 并且我想添加一个日期时,它不起作用。当我按下按钮并因此更改日期时,我希望看到 DialogPicker,但文本视图中没有出现任何内容。我的代码在这里。如果有人告诉我如何按月、日、年的顺序制作日期也很好
片段类:
公共类片段扩展片段实现 DatePickerDialog.OnDateSetListener {
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
calendar = Calendar.getInstance();
Button button = (Button) getView().findViewById(R.id.change);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogFragment datepicker = new DatePickerFragment();
datepicker.show(getFragmentManager(), "date picker");
}
});
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String currentime = DateFormat.getDateInstance(DateFormat.FULL).format(calendar.getTime());
TextView textView = getView().findViewById(R.id.date);
textView.setText(currentime);
}
}
DatePicker 的类: public class DatePickerFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(),(DatePickerDialog.OnDateSetListener) getTargetFragment(),
year, month, day);
}
}
解决方案
fragment_main.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
orientation="Vertical"
tools:context=".MainFragment">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Date"
android:id="@+id/Date"
android:layout_marginTop="50dp"
android:layout_centerHorizontal="true"
android:textSize="30sp"/>
<Button
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Select Date"
/>
</LinearLayout>
MainFragment.java
public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";
private TextView date;
private Button mDisplayDate;
private DatePickerDialog.OnDateSetListener mDateSetListener;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, container, false);
mDisplayDate=view.findViewById(R.id.tvDate);
date=view.findViewById(R.id.Date);
mDisplayDate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog = new DatePickerDialog(
MainActivity.this,
android.R.style.Theme_Holo_Light_Dialog_MinWidth,
mDateSetListener,
year,month,day);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show();
}
});
mDateSetListener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
month = month + 1;
Log.d(TAG, "onDateSet: mm/dd/yyy: " + month + "/" + day + "/" + year);
String date = month + "/" + day + "/" + year;
date.setText(date);
}
};
return view;
}
}
推荐阅读
- python - 使用支持向量回归的预测
- linkedin - Wordpress 网站链接预览在 LinkedIn 组中不起作用
- java - 如何获取.mp3 文件的平移控制格式?
- file - 如果在 cpanel 文件管理器中进行更改,它不会真正对网站产生影响
- python - (Python)TypeError:找不到所需的参数'flags'(pos 2)
- python - 我可以依靠临时文件在关闭后保持不变吗?
- javascript - 将垂直滚动条保持在独立于水平滚动的固定位置
- c# - 如何准确测量 C# 代码中的内存分配?
- compiler-errors - 如何在 BuckleScript 中编译带有接口的文件?
- c++ - Function calling at the left side of the expression