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

디데이어플 만들어 보려는중에 오류속에서 헤어나오지 못하고 있습니다.

0 추천

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()   이방법이 맞는건지요 제 소스안에서 해결방법좀 알려주세요.  초보에게 조언좀 부탁드립니다.

 

jjy1188 (120 포인트) 님이 2013년 3월 6일 질문
jjy1188님이 2013년 3월 6일 수정
소스 전문을 올리는 것보다 logcat에서 어떤 에러를 출력하는지 올리는게 좋습니다.

1개의 답변

0 추천

cbt.setOnClickListener((OnClickListener) this);

 

이부분에서 ClassCastException이 나고있네요.

리스너를 달때 Activity 클래스내에서 this를 이용해서 연결을 하는경우 

리스너의 interface가 implements 되어있을때 사용합니다.

물론 그경우에는 (OnClickListener)this 처럼 캐스팅은 필요없게 되죠.

이라슈 (8,770 포인트) 님이 2013년 3월 6일 답변
자세히 답변해주셔서 감사합니다.
꾸,,,,,,,,,,,,,,,,벅!!!
...