마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

DatePickerDialog와 TimePickerDialog를 이용해서 TextView에 입력받기

0 추천

안녕하세요! 프로그래밍 공부를 한지 얼마 안된 뉴비입니다... 사진에서처럼 6개의 버튼이 있고 각 버튼을 클릭하면 입력한 날짜와 시간을 "??일시" 옆 TextView에 출력하는 것을 짜보려고 하는데 문제가 생겼는데 도와주시면 감사하겠습니다 ㅠㅠ

1. 버튼을 눌러 날짜나 시간을 입력하면 TextView에 내용이 바로 떠야하는데, 입력한 버튼을 한 번더 눌러줘야 TextView에 내용이 뜨게됩니다...

 - InitializeListener함수에서 각 TextView로 내용이 입력돼야 하는데 방법을 모르겠어서 setTime(Date)Text(TextView tvText) 함수를 추가했습니다...

2. 만약 접수시간 버튼을 눌러 시간을 입력하면 그 시간정보가 남아있어서 도착시간, 완료시간 버튼을 클릭할 때 접수시간의 정보가 도착일시, 완료일시의 TextView에 저장이 됩니다... 

 - cDate와 cTime을 전역변수로 선언해서 정보가 남아있는 것 같은데 어떻게 처리하면 좋을까요??

 

 

import androidx.appcompat.app.AppCompatActivity;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;
import java.util.Calendar;

public class MainActivity extends AppCompatActivity {
    private TextView receiptDateText, receiptTimeText, arrivalDateText, arrivalTimeText, completeDateText, completeTimeText;
    private DatePickerDialog.OnDateSetListener callbackDateMethod;
    private TimePickerDialog.OnTimeSetListener callbackTimeMethod;
    private int cYear, cMonth, cDay, cHour, cMinute;
    private String cDate, cTime;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        this.InitializeView();
        this.InitializeButton();
        this.InitializeCalendar();
        this.InitializeListener();
    }

    public void InitializeView() {
        receiptDateText = (TextView) findViewById(R.id.TextView_receiptDateText);
        receiptTimeText = (TextView) findViewById(R.id.TextView_receiptTimeText);
        arrivalDateText = (TextView) findViewById(R.id.TextView_arrivalDateText);
        arrivalTimeText = (TextView) findViewById(R.id.TextView_arrivalTimeText);
        completeDateText = (TextView) findViewById(R.id.TextView_completeDateText);
        completeTimeText = (TextView) findViewById(R.id.TextView_completeTimeText);
    }

    public void InitializeButton() {
        findViewById(R.id.Button_arrivalDate).setOnClickListener(onClickListener);
        findViewById(R.id.Button_arrivalTime).setOnClickListener(onClickListener);
        findViewById(R.id.Button_receiptDate).setOnClickListener(onClickListener);
        findViewById(R.id.Button_receiptTime).setOnClickListener(onClickListener);
        findViewById(R.id.Button_completeDate).setOnClickListener(onClickListener);
        findViewById(R.id.Button_completeTime).setOnClickListener(onClickListener);
    }

    public void InitializeCalendar() {
        Calendar cal = Calendar.getInstance();
        cYear = cal.get(Calendar.YEAR);
        cMonth = cal.get(Calendar.MONTH);
        cDay = cal.get(Calendar.DAY_OF_MONTH);
        cHour = cal.get(Calendar.HOUR_OF_DAY);
        cMinute = cal.get(Calendar.MINUTE);
    }

    public void InitializeListener() {
        callbackDateMethod = new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                cDate = year + "년" + (monthOfYear + 1) + "월" + dayOfMonth + "일";
            }
        };

        callbackTimeMethod = new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                cTime = hourOfDay + "시" + minute + "분";
            }
        };
    }

    private void setDateText(TextView tvText) {
        DatePickerDialog dialogDate = new DatePickerDialog(MainActivity.this, callbackDateMethod, cYear, cMonth, cDay);
        dialogDate.show();
        tvText.setText(cDate);
    }

    private void setTimeText(TextView tvText) {
        TimePickerDialog dialogTime = new TimePickerDialog(MainActivity.this, callbackTimeMethod, cHour, cMinute, true);
        dialogTime.show();
        tvText.setText(cTime);
    }

    View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                default:
                case R.id.Button_receiptDate:
                    setDateText(receiptDateText);
                    break;
                case R.id.Button_receiptTime:
                    setTimeText(receiptTimeText);
                    break;
                case R.id.Button_arrivalDate:
                    setDateText(arrivalDateText);
                    break;
                case R.id.Button_arrivalTime:
                    setTimeText(arrivalTimeText);
                    break;
                case R.id.Button_completeDate:
                    setDateText(completeDateText);
                    break;
                case R.id.Button_completeTime:
                    setTimeText(completeTimeText);
                    break;
            }
        }
    };


}

 

 

popoplz (160 포인트) 님이 2020년 4월 14일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...