안드로이드 커스텀 다이얼로그 위에 datepicker를 띄우려하는데.. 클릭리스너가 안먹히네요..오류좀 봐주세요 ㅠㅠ

조회수 3244회

저는 커스텀 다이얼로그를 통해 사용자에게 정보를 입력받고 싶거든요 그래서 dialogfragment위에 커스텀한 xml코드를 붙였는데 이렇게 붙였어요! 근데... 현재날짜는 잘뜨는데 저 텍스트뷰 영역을 클릭했을때 pickdate를 띄우고싶은데...안뜨네요 액티비티에서는 잘뜨는데 ㅠㅠAlertdialog위에서는 또 다이얼로그가 안뜨나요?ㅠㅠ 오류좀봐수제요 ㅠㅠ


        <TextView
            android:id="@+id/pickDate3"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="10dp"
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:gravity="center"
            android:textSize="15sp"
            android:background="@drawable/border"
            android:text="" />



import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.TextView;

import java.util.Calendar;


public class DialogFragment extends android.support.v4.app.DialogFragment  {

    private TextView mDateDisplay;

    private int mYear;
    private int mMonth;
    private int mDay;
    static final int DATE_DIALOG_ID = 0;


    public DialogFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState)
    {
        View view = inflater.inflate(R.layout.custom_dialog, container);

        //// Date Picker : 시작 ////
        //(1) main.xml의 레이아수에 배치된 날짜 입력을 위한 TextView 인식
        mDateDisplay = (TextView) view.findViewById(R.id.pickDate3);


        //(2) 인식된 TextView 에 click listener 추가
        mDateDisplay.setOnClickListener(new View.OnClickListener() {
            @Override //(5)클릭되면 실행
            public void onClick(View v) {

               getActivity().showDialog(DATE_DIALOG_ID);  //(6)날짜 설정을 위한 다이얼로그 출력
            }
        });



        // (3) 현재 날짜 인식
        final Calendar c = Calendar.getInstance();
        mYear=c.get(Calendar.YEAR);
        mMonth=c.get(Calendar.MONTH);
        mDay=c.get(Calendar.DAY_OF_MONTH);

        // (4) 인식된 날짜를 출력
        updateDisplay();
        return view;
    }

    // (7) 다이어로그 출력시 DatePicker 다이어로그 출력

    protected Dialog onCreateDialog(int id) {
        switch(id){
            case DATE_DIALOG_ID : return new DatePickerDialog(getActivity(),mDateSetListener,mYear,mMonth,mDay);


        }

        return null;
    }


    // 설정된 날짜를 TextView에 출력
    private void updateDisplay() {
        // main.xml의 레이아웃에 배치된 날짜 입력 TextView에 인식된 날짜 출력
        mDateDisplay.setText(
                new StringBuilder()
                        //월은 시스템에서 0~11로 인식하기 때문에 1을 더해줌
                        .append(mYear).append("-")
                        .append(mMonth + 1).append("-")
                        .append(mDay).append(" ")
        );

    }

    // (8) 다이어로그에 있는 날짜를 설정(set)하면 실행됨
    private DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {

        public void onDateSet(DatePicker view, int year, int monthOfYear,
                              int dayOfMonth) {
            mYear = year;
            mMonth=monthOfYear;
            mDay=dayOfMonth;
            // 사용자가 지정한 날짜를 출력
            updateDisplay();

        }
    };



}

  • (•́ ✖ •̀)
    알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)