안녕하세요! 프로그래밍 공부를 한지 얼마 안된 뉴비입니다... 사진에서처럼 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;
}
}
};
}