Android 显示日期选择器和时间选择器时出错
我有一个问题,我有两种方法来显示时间选择器和日期选择器。分开来看,它们工作得很好,但如果我需要将一个链接在另一个后面(我真的想要一个带有时间和日期的选择器,但我还没有找到正确的方法)。因此,我发布以下代码 我从一个片段中调用它,当我点击一个按钮时,但我需要他们像我所说的那样一个接一个地显示出来Android 显示日期选择器和时间选择器时出错,android,datepicker,fragment,timepicker,Android,Datepicker,Fragment,Timepicker,我有一个问题,我有两种方法来显示时间选择器和日期选择器。分开来看,它们工作得很好,但如果我需要将一个链接在另一个后面(我真的想要一个带有时间和日期的选择器,但我还没有找到正确的方法)。因此,我发布以下代码 我从一个片段中调用它,当我点击一个按钮时,但我需要他们像我所说的那样一个接一个地显示出来 public void showTimePickerDialog() { TimePickerFragment newFragment = new TimePickerFragment()
public void showTimePickerDialog() {
TimePickerFragment newFragment = new TimePickerFragment();
newFragment.setTargetFragment(this, 0);
newFragment.show(this.getFragmentManager(), "timePicker");
}
public void showDatePickerDialog() {
DatePickerFragment newFragment = new DatePickerFragment();
newFragment.setTargetFragment(this, 0);
newFragment.show(this.getFragmentManager(), "datePicker");
}
public void onFinishTimePickerDialog(int hourOfDay, int minute) {
tmp_hour = hourOfDay;
tmp_minute = minute;
String str_day, str_month, str_year, str_hour, str_minute;
str_year = String.format("%d", tmp_year);
str_month = String.format("%02d", tmp_month);
str_day = String.format("%02d", tmp_day);
str_hour = String.format("%02d", tmp_hour);
str_minute = String.format("%02d", tmp_minute);
((CloseItActivity) getActivity()).setBuydate(str_day + "/" + str_month + "/" + str_year + " " + str_hour + ":" + str_minute);
}
public void onFinishDatePickerDialog(int year, int month, int day) {
tmp_year = year;
tmp_month = month;
tmp_day = day;
}
多谢各位
编辑:如果我将showTimePickerDialog()放在showDatePickerDialog()的内部,应用程序就会崩溃,我认为这是一个上下文问题,但我不清楚
日志表明类中的onDataSet上存在nullexception:
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.util.Log;
import android.widget.DatePicker;
import java.util.Calendar;
/**
* Created by McFly on 10/05/2014.
*/
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
//Interface creada para implementar un método que podamos utilizar como
//enlace de la actividad en curso y le enviemos la información
//seleccionada por el usuario.
public interface DatePickerFragmentListener{
void onFinishDatePickerDialog(int year, int month, int day);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
//Datos que seleccionara el usuario.
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);
// Creamos la instancia del DatePicker para devolverla.
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker arg0, int year, int month, int day) {
// TODO Auto-generated method stub
Log.i("LOG_PARENT_FRAG", "" + getParentFragment());
DatePickerFragmentListener activity = (DatePickerFragmentListener) getParentFragment();
activity.onFinishDatePickerDialog(year, month, day);
}
}
getParentFragment为null,这就是问题所在。如何将父片段的上下文传递给它?如果它们是动态创建的(这种情况下),您可能需要传递上下文来创建它们?(this.context)如果我在“onFinishDatePickerDialog(…)”的末尾调用showTimePickerDialog(),应用程序就会崩溃。你说我需要为此更改上下文。上下文?我建议你向showTimePickerDialog(上下文上下文)和showDatePickerDialog(上下文)发送上下文,然后用TimePickerFragment(上下文)创建它们。这只是一个快速的提示它不是一个解决方案,因为片段的上下文是容器的上下文(context=container.getContext()),而容器的上下文不是片段的上下文。请从LogCat发布错误消息,好吗?