2

こんにちは、これに対する解決策が見つからないようです。押すと日付ピッカーダイアログを開く2つのボタンがありますが、私の問題は、OnDateSetメソッドの適切なボタンにどのように設定できるかです。日付に DialogFragment を使用してから、アクティビティに DateListener を実装しています。getTag() を使用してみましたが、タグを取得できませんでした。ここに私が試したものがあります:

public void showfromDatePickerDialog(View v) {
        DialogFragment dateFragment = new DateDialogFragment();
        dateFragment.show(getSupportFragmentManager(), "fromdatePicker");
    }

    public void showtoDatePickerDialog(View v) {
        DialogFragment dateFragment = new DateDialogFragment();
        dateFragment.show(getSupportFragmentManager(), "todatePicker");
    }


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

        StringBuilder builder = new StringBuilder();
        builder.append(day).append("-")
               .append(month).append("-")
               .append(year);

        String text= builder.toString();

        if(view.getTag().toString().equals("fromdatePicker")) { // error here

            Log.d(TAG, "got here" + text);
            fromdate.setText(text);
        }


        if(view.getTag() == "todatePicker") {
            todate.setText(text);
        }

これを実装する方法はありますか?2 つの異なる DialogFragment クラスの使用に関する解決策を見続けていますが、別の方法があるはずだと推測しています。または私は間違っていますか?ありがとうございました

4

3 に答える 3

4

わかりました、これらの回避策があります。これは、この問題を抱えているすべての人に役立ちます。少し間違っている場合はお知らせください。変更できます。しかし、これは私がこの問題を解決するためにしたことです。

DateSet で:

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

        StringBuilder builder = new StringBuilder();
        builder.append(day).append("-")
               .append(month).append("-")
               .append(year);

        String text= builder.toString();

FragmentManager fragmanager = getSupportFragmentManager();

      if(fragmanager.findFragmentByTag("fromdatePicker") != null) {

            Log.d(TAG, "got here" + text);
            fromdate.setText(text);
        }



       // if(view.getTag() == "todatePicker") {
  if(fragmanager.findFragmentByTag("todatePicker") != null) {
            todate.setText(text);
        }

そうすれば、複数の呼び出しに同じ dateListener を使用し、ダイアログで show を呼び出したときに渡されたタグに基づいて日付を適切に設定できます。

于 2012-09-20T14:44:07.437 に答える
1

以下のDatePickerダイアログのコードを使用してください。

private int mYear;
private int mMonth;
private int mDay; 
Calendar cal4DatePicker = Calendar.getInstance();
Button btnDOB=findviewbyId(R.id.btndob);

private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        mYear = year;
        mMonth = monthOfYear;
        mDay = dayOfMonth;

        cal4DatePicker.set(Calendar.YEAR, mYear);
        cal4DatePicker.set(Calendar.MONTH, mMonth);
        cal4DatePicker.set(Calendar.DAY_OF_MONTH, mDay);

        btnDOB.setText(new StringBuilder()
                .append(mDay).append("-").append(mMonth).append("-").append(mYear).append(" "));
    }
};

btnDOBでは、このDatePickerダイアログを表示するためにクリックリストナーを設定する必要があります。

于 2012-09-20T14:11:11.707 に答える