2013-12-19 3 views
2

Android Studio를 개발하고 사용하고 있습니다. 캘린더를 사용하여 사용자 입력에서 날짜를 가져 오는 화면이 있습니다. 이 문제에 코드를 추가하자마자 다른 화면으로 이동하는 버튼이 작동을 멈췄습니다. 나는 이것에 대해 몇 시간을 보냈으며 내가 잘못 가고있는 곳을 찾을 수 없다. 나는 그것이 내 코드의 순서와 관련이 있다고 의심하지만 여기서 고군분투하고있다. 여기 다른 화면으로 이동하면 작동하지 않습니다.

는 자바 클래스

//class starts here 
    package com.MSL.claimssolutions1; 

    import android.app.Activity; 
    import android.app.DatePickerDialog; 
    import android.app.Dialog; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.DatePicker; 
    import android.widget.EditText; 
    import android.widget.TextView; 

    import java.util.Calendar; 


    public class accident_details_activity extends Activity 
    { 
     //set variables 
     private int mYear; 
     private int mMonth; 
     private int mDay; 

     private TextView mDateDisplay; 
     private Button mPickDate; 

     static final int DATE_DIALOG_ID = 0; 
     accident_details_activity ob; 
     public void onCreate(Bundle icicle) 
     { 
      //listen for click from button to move to next screen 

// this is where I think my code is going wrong - I think should be moved elsewhere, not sure though 
      super.onCreate(icicle); 
      setContentView(R.layout.accident_details_activity); 
      Button StepFive = (Button) findViewById(R.id.StepFive_button); 
      StepFive.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View arg0) { 
      //move to next screen - i.e. upload files 
       Intent i = new Intent(accident_details_activity.this, upload_file_activity.class); 
       startActivity(i); 
      } 

      }); 

     //add calendar functionality 

      //@Override 
      super.onCreate(icicle); 
      setContentView(R.layout.accident_details_activity); 

      mDateDisplay = (EditText) findViewById(R.id.AccidentDate); 
      mPickDate = (Button) findViewById(R.id.myDatePickerButton); 

      mPickDate.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        showDialog(DATE_DIALOG_ID); 
       } 
      }); 

      // get the current date 
      final Calendar c = Calendar.getInstance(); 
      mYear = c.get(Calendar.YEAR); 
      mMonth = c.get(Calendar.MONTH); 
      mDay = c.get(Calendar.DAY_OF_MONTH); 

      // display the current date 
      updateDisplay(); 
     } 
     public void setOb(accident_details_activity obA){ 
      this.ob=obA; 
     } 
    //update text field with date selected from calendar 
     private void updateDisplay() { 
      this.mDateDisplay.setText(
        new StringBuilder() 
          // Month is 0 based so add 1 
          .append(mDay).append("-") 
          .append(mMonth + 1).append("-") 
          .append(mYear).append(" ")); 
     } 
     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(); 
        } 
       }; 
     @Override 
     protected Dialog onCreateDialog(int id) { 
      switch (id) { 
       case DATE_DIALOG_ID: 
        return new DatePickerDialog(this, 
          mDateSetListener, 
          mYear, mMonth, mDay); 
      } 
      return null; 
     } 

    } 
+1

왜'setContentView'를 두 번 호출합니까? 그러지 마. – njzk2

+0

Brilliant, setContentView가 두 번 나열되면서 문제가 발생했습니다. 나는 그것이 그것보다 더 복잡한 이유가 될 것이라고 생각했다. 다시 한 번 고마워, 다시 stackoverflow 커뮤니티 구출 :-) – user2029541

답변

2

당신은 된 setContentView를 (호출) 한 후, 클릭하여보기를 찾고 리스너를 설정 한 다음()를 다시 된 setContentView를 호출에서 코드입니다. 이렇게하면 설치 한 화면이 지워집니다. StepFive 버튼에 대한 참조가 더 이상 같은 계층에 있지 않음을 언급하십시오.

setContentView를 한 번 호출 한 다음 변수와 수신기를 바인딩하십시오.

관련 문제