Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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 - Fatal编程技术网

Android 关于多日期选择器的问题

Android 关于多日期选择器的问题,android,datepicker,Android,Datepicker,我想设置一个日期间隔,当用户按下结束日期时,绘制一张图表。我的问题是,图表是在开始日期和结束日期绘制的 我试图设置一个布尔变量或int来决定何时绘制图表,但由于我使用“DatePickerFragmet”中的“onDateSet”,我无法修改它的参数。。。我将代码粘贴到此处,以帮助澄清我试图解释的内容: 关于我的主要活动,我有: startDate.setOnClickListener(new OnClickListener() { public void onClick(View v)

我想设置一个日期间隔,当用户按下结束日期时,绘制一张图表。我的问题是,图表是在开始日期和结束日期绘制的

我试图设置一个布尔变量或int来决定何时绘制图表,但由于我使用“DatePickerFragmet”中的“onDateSet”,我无法修改它的参数。。。我将代码粘贴到此处,以帮助澄清我试图解释的内容:

关于我的主要活动,我有:

startDate.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
    // TODO Auto-generated method stub
        for (int i=0; i<2; i++){
            showDatePickerDialog(v,i);
        }
    }
});

public void showDatePickerDialog(View v, int i) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getFragmentManager(), "datePicker");

}

。。。当选择了最终日期时,我如何绘制图表?

因为我找不到一种方法来完成这一点,正如我前面提到的,我已经找到了一个解决方案,使用两个按钮(开始和结束)来选择日期,而不是只使用一个按钮并使用循环。 之后,我创建了另一个类,每个按钮调用一个不同的类

按钮和方法“showStartDatePicker”和“showEndDatePicker”的声明:

“StartDatePickerFragment”类:

类“EndDatePickerFragment”:


我几乎做了两次同样的事情(创建DatePicker),但我找不到更有效的方法。

根据
newFragment.show()中传递的标记编写if..else或switch语句

在这里,您必须分别为每个日期选择器编写一个
showDatePickerDialog()
方法,以便每个日期选择器都具有不同的标记。 我已按以下方式实施:

public void showDeadlineDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "deadlineDate");
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    StringBuilder task = new StringBuilder();
     task.append(day);
     task.append(".");
     task.append(month+1);
     task.append(".");
     task.append(year);
     String x=task.toString();
     if (getTag()=="deadlineDate")
        {

            btn=(Button) getActivity().findViewById(R.id.btn_deadline_date);
            btn.setText(x);


        }
     if (getTag()=="reminderDate")
     {
         btn=(Button) getActivity().findViewById(R.id.btn_reminder_date);
         btn.setText(x);

     }
}

谢谢我用两个不同的类解决了这个问题,如下所示,一个用于开始日期,另一个用于结束日期。但我发现你的解决方案更有效。非常感谢。此外,我决定去掉“for”循环,改为使用两个按钮。我认为@Palak Bheda应该使用
getTag().equals(“deadlineDate”)
而不是在if语句中使用
=
。onDateSet()下没有名为getTag()的方法。您可以看一下吗?您可以在这里看一下他们是如何使用setCallBack方法传递特定回调的-
final Button startDate = (Button)findViewById(R.id.startDate);
final Button endDate = (Button)findViewById(R.id.endDate);

public void showStartDatePicker(View v) {
    DialogFragment newFragment = new StartDatePickerFragment();
    newFragment.show(getFragmentManager(), "StartDatePicker");
}

public void showEndDatePicker(View v) {
    DialogFragment newFragment = new EndDatePickerFragment();
    newFragment.show(getFragmentManager(), "EndDatePicker");
}
public class StartDatePickerFragment extends DialogFragment 
                    implements DatePickerDialog.OnDateSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the current date as the default date in the picker
    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);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), this, year, month, day);
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    // Do something with the date chosen by the user

    Toast.makeText(getActivity(), "Fecha seleccionada: " + day + "/" + (month+1) + "/" + year, Toast.LENGTH_SHORT).show();
}
}
public class EndDatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    // Use the current date as the default date in the picker
    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);

    // Create a new instance of DatePickerDialog and return it
    return new DatePickerDialog(getActivity(), this, year, month, day);
}

public void onDateSet(DatePicker view, int year, int month, int day) {

    LineGraph lineGraph = new LineGraph();
    lineGraph.run(getActivity());
}
}
public void showDeadlineDatePickerDialog(View v) {
    DialogFragment newFragment = new DatePickerFragment();
    newFragment.show(getSupportFragmentManager(), "deadlineDate");
}

public void onDateSet(DatePicker view, int year, int month, int day) {
    StringBuilder task = new StringBuilder();
     task.append(day);
     task.append(".");
     task.append(month+1);
     task.append(".");
     task.append(year);
     String x=task.toString();
     if (getTag()=="deadlineDate")
        {

            btn=(Button) getActivity().findViewById(R.id.btn_deadline_date);
            btn.setText(x);


        }
     if (getTag()=="reminderDate")
     {
         btn=(Button) getActivity().findViewById(R.id.btn_reminder_date);
         btn.setText(x);

     }
}