Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 显示日期选择器和时间选择器时出错_Android_Datepicker_Fragment_Timepicker - Fatal编程技术网

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发布错误消息,好吗?