Android- 自定义对话框中的日期选择器
Android- Datepicker at custom dialog
我有一个带有 datepicker
的自定义对话框。在我的 Fragment
上,我有一个按钮,当我按下它时,对话框出现,我 select 来自 datepicker
的日期。我希望 selected 日期显示在我的 Fragment
中的 textview
上。我的代码如下:
这是我主 Activity
上包含 Fragment
:
的对话框的代码
public int day;
public int month;
public int year;
@SuppressLint("InflateParams")
@SuppressWarnings("deprecation")
public void SetDate(){
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Select Date");
alertDialog.setIcon(R.drawable.action_reservations);
LayoutInflater layoutInflater = LayoutInflater.from(context);
View promptView = layoutInflater.inflate(R.layout.datepicker, null);
alertDialog.setView(promptView);
final DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) findViewById(R.id.pickeddate);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
day=datePicker.getDayOfMonth();
month=datePicker.getMonth() + 1;
year=datePicker.getYear();
PickedDate.setText(new StringBuilder().append(day).append(" ").
append("-").append(month).append("-").append(year));
}
});
// Showing Alert Message
alertDialog.show();
}
我从 datepicker
获取日、月和年,并使用
将它们设置到我的文本视图中
PickedDate.setText(new StringBuilder().append(day).append(" ").
append("-").append(month).append("-").append(year));
同样在我的片段中,我使用以下代码调用我的对话框:
final Button SetDate = (Button)rootView.findViewById(R.id.selectdate);
SetDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
((MainActivity) getActivity()).SetDate();
}
});
当我 运行 我的应用程序在这些行上出现 nullPointerException:
day=datePicker.getDayOfMonth();
month=datePicker.getMonth() + 1;
year=datePicker.getYear();
我做错了什么?提前致谢
尝试替换
final DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) findViewById(R.id.pickeddate);
有了这个
final DatePicker datePicker = (DatePicker) promptView.findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) promptView.findViewById(R.id.pickeddate);
我有一个带有 datepicker
的自定义对话框。在我的 Fragment
上,我有一个按钮,当我按下它时,对话框出现,我 select 来自 datepicker
的日期。我希望 selected 日期显示在我的 Fragment
中的 textview
上。我的代码如下:
这是我主 Activity
上包含 Fragment
:
public int day;
public int month;
public int year;
@SuppressLint("InflateParams")
@SuppressWarnings("deprecation")
public void SetDate(){
AlertDialog alertDialog = new AlertDialog.Builder(context).create();
alertDialog.setTitle("Select Date");
alertDialog.setIcon(R.drawable.action_reservations);
LayoutInflater layoutInflater = LayoutInflater.from(context);
View promptView = layoutInflater.inflate(R.layout.datepicker, null);
alertDialog.setView(promptView);
final DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) findViewById(R.id.pickeddate);
alertDialog.setButton("OK", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
day=datePicker.getDayOfMonth();
month=datePicker.getMonth() + 1;
year=datePicker.getYear();
PickedDate.setText(new StringBuilder().append(day).append(" ").
append("-").append(month).append("-").append(year));
}
});
// Showing Alert Message
alertDialog.show();
}
我从 datepicker
获取日、月和年,并使用
PickedDate.setText(new StringBuilder().append(day).append(" ").
append("-").append(month).append("-").append(year));
同样在我的片段中,我使用以下代码调用我的对话框:
final Button SetDate = (Button)rootView.findViewById(R.id.selectdate);
SetDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
((MainActivity) getActivity()).SetDate();
}
});
当我 运行 我的应用程序在这些行上出现 nullPointerException:
day=datePicker.getDayOfMonth();
month=datePicker.getMonth() + 1;
year=datePicker.getYear();
我做错了什么?提前致谢
尝试替换
final DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) findViewById(R.id.pickeddate);
有了这个
final DatePicker datePicker = (DatePicker) promptView.findViewById(R.id.datePicker1);
final TextView PickedDate = (TextView) promptView.findViewById(R.id.pickeddate);