1

日付間隔を設定したいのですが、ユーザーが終了日を押すと、グラフが描画されます。私が抱えている問題は、チャートが開始日と終了日の両方に描画されることです。

グラフをいつ描画するかを決定するためにブール変数または整数を設定しようとしましたが、「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");

}

次に、新しいクラスで onDateSet を呼び出します。

public class DatePickerFragment 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
    LineGraph lineGraph = new LineGraph();
    lineGraph.run(getActivity());

}

... 最終日が選択されたときにどのようにグラフを描くことができますか?

4

2 に答える 2

3

渡された Tag に基づいて、if..else または switch ステートメントを記述します。newFragment.show();

ここでは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);

     }
}
于 2012-07-27T10:51:48.750 に答える
0

前に述べたようにこれを行う方法が見つからないため、1つだけを使用してループを使用するのではなく、2つのボタン(開始と終了)を使用して日付を選択することで解決策に到達しました。その後、別のクラスを作成し、ボタンごとに異なるクラスを呼び出します。

ボタンとメソッド「showStartDatePicker」および「showEndDatePicker」の宣言:

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");
}

クラス"StartDatePickerFragment":

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();
}
}

クラス"EndDatePickerFragment":

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());
}
}

私はほぼ同じことを2回行っています(DatePickerを作成しています)が、より効率的な方法を見つけることができません。

于 2012-07-26T12:12:34.637 に答える