안드로이드 커스텀 다이얼로그 위에 datepicker를 띄우려하는데.. 클릭리스너가 안먹히네요..오류좀 봐주세요 ㅠㅠ
조회수 3245회
저는 커스텀 다이얼로그를 통해 사용자에게 정보를 입력받고 싶거든요 그래서 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();
}
};
}
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력