
package com.example.ddaycalcproject;
import java.util.Calendar;
import android.app.DatePickerDialog.OnDateSetListener;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
TextView tv1;
TextView tv2;
TextView tv4;
TextView reTv;
Button bt;
Button cbt;
private int tYear;
private int tMonth;
private int tDay; // 현재 지정한 날짜의 연월일 변수
private int dYear;
private int dMonth;
private int dDay;
private long t;
private long d;
private long r;
static final int DATE_DIALOG_ID=0;
private int resultNum = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
reTv=(TextView)findViewById(R.id.textView3);
tv2=(TextView)findViewById(R.id.textView2);
tv1=(TextView)findViewById(R.id.textView1);
tv4=(TextView)findViewById(R.id.textView4);
bt=(Button)findViewById(R.id.button_cal);
cbt=(Button)findViewById(R.id.button1);
cbt.setOnClickListener((OnClickListener) this);
findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDatePicker();
}
});
Calendar calendar = Calendar.getInstance();
tYear = calendar.get(Calendar.YEAR);
tMonth = calendar.get(Calendar.MONTH);
tDay = calendar.get(Calendar.DAY_OF_MONTH);
Calendar dCalendar = Calendar.getInstance();
dCalendar.set(dYear, dMonth, dDay);
t = calendar.getTimeInMillis();
d = dCalendar.getTimeInMillis();
r = (d-t)/(24*60*60*1000);
resultNum = (int)r + 1;
updateDisplay();
}
private void updateDisplay() {
tv1.setText(String.format("%d년 %d월 %d일", tYear, tMonth+1, tDay));
tv2.setText(String.format("%d년 %d월 %d일", dYear, dMonth+1, dDay));
if(resultNum>=0) {
reTv.setText(String.format("기준일로부터 D -%d", resultNum));
}
else{
int absR=Math.abs(resultNum);
reTv.setText(String.format("기준일로부터 D +%d", absR));
}
}
/****************************데이트피커************************************/
private void showDatePicker() {
DatePickerFragment date = new DatePickerFragment();
/**
* Set Up Current Date Into dialog
*/
Calendar calender = Calendar.getInstance();
Bundle args = new Bundle();
args.putInt("year", calender.get(Calendar.YEAR));
args.putInt("month", calender.get(Calendar.MONTH));
args.putInt("day", calender.get(Calendar.DAY_OF_MONTH));
date.setArguments(args);
/**
* Set Call back to capture selected date
*/
date.setCallBack(ondate);
}
OnDateSetListener ondate = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
Toast.makeText(
MainActivity.this,
String.valueOf(year) + "-" + String.valueOf(monthOfYear)
+ "-" + String.valueOf(dayOfMonth),
Toast.LENGTH_LONG).show();
tv4.setText(String.valueOf(year) + "-" + String.valueOf(monthOfYear)
+ "-" + String.valueOf(dayOfMonth));
}
};
/****************************데이트피커************************************/
}
//현재 이정도 하고있는 상태인데요. 소스상에 오류없는데 실행시키면 왜 애플리케이션이 예상치 않게 중지 될까요?
그리고 버튼으로 불러온 데이트피커로 고른 날짜를 다시 그 버튼안에 입력시키고 싶은데 요령좀 부탁드립니다.
버튼.setText() 이방법이 맞는건지요 제 소스안에서 해결방법좀 알려주세요. 초보에게 조언좀 부탁드립니다.