2016-10-11 3 views
0

내가 가지고있는 것은 눌렀을 때 열리고 사용자는 캘린더에서 날짜를 선택할 수있는 캘린더 위젯이다. DateSetup 클래스 내부에 입력 한 날짜를 저장할 변수가 있고 putExtra()를 사용하여 코드를 따라 한 클래스의 데이터를 다른 클래스로 보내지 만 값이 표시되지 않습니다.안드로이드 - putExtra()로 캘린더 데이터가 전송되지 않는다

응용 프로그램의 프로세스는 날짜가 선택되었을 때 사용자가 작동하는 시간 선택기 위젯으로 시간을 선택할 수 있습니다.

날짜와 시간을 선택한 후에는 날짜/시간 값이 표시되어야하는 값이 MySQL 데이터베이스로 전송됩니다. 선택한 시간 만 표시되지만 선택한 달력의 날짜는 표시되지 않습니다.

DateSetup 클래스

public class DateSetup extends MainActivity implements View.OnClickListener 
{ 

    //UI References 
    private EditText fromDateEtxt; 
    private EditText toDateEtxt; 

    // Dates Strings setup 
    String startDate; 
    String endDate; 


    DatePickerDialog fromDatePickerDialog; 
    DatePickerDialog toDatePickerDialog; 

    private SimpleDateFormat dateFormatter; 

    private DataDBAdapter2 Database; 

    Button btnHistory; 
    Button btnTime; 
    Button btnFuture; 
    Button btnManual; 


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


     fromDateEtxt = (EditText) findViewById(R.id.etxt_fromdate); 
     fromDateEtxt.setInputType(InputType.TYPE_NULL); 
     fromDateEtxt.requestFocus(); 

     toDateEtxt = (EditText) findViewById(R.id.etxt_todate); 
     toDateEtxt.setInputType(InputType.TYPE_NULL); 
     toDateEtxt.requestFocus(); 


     btnTime = (Button)findViewById(R.id.btnSetDates); 
     btnFuture = (Button)findViewById(R.id.btnFutureSetups); 
     btnManual = (Button)findViewById(R.id.btnManualControl); 


     fromDateEtxt.setOnClickListener(this); 
     toDateEtxt.setOnClickListener(this); 



     // Open the database 
     Database = new DataDBAdapter2(this); 
     Database.open(); 

     // Set the date format to English (Australia) 
     dateFormatter = new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH); 

     btnHistory = (Button)findViewById(R.id.btnHistoryView); 
     btnHistory.setOnClickListener(this); 


     //------------------------------------------- 
     // Start Date (From date) 
     //------------------------------------------- 
     Calendar newCalendar = Calendar.getInstance(); 
     fromDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() 
     { 
      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
      { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       fromDateEtxt.setText(dateFormatter.format(newDate.getTime())); 
       //startDate = fromDateEtxt.getText().toString(); 

      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 


     //------------------------------------------- 
     // End Date (End date) 
     //------------------------------------------- 
     toDatePickerDialog = new DatePickerDialog(this, new OnDateSetListener() 
     { 

      public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) 
      { 
       Calendar newDate = Calendar.getInstance(); 
       newDate.set(year, monthOfYear, dayOfMonth); 
       toDateEtxt.setText(dateFormatter.format(newDate.getTime())); 
       //endDate = toDateEtxt.getText().toString(); 


      } 

     },newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH)); 


     // Set dates and continue to set times 
     btnTime.setOnClickListener(new View.OnClickListener()//OnClickListener() 
     { 
      @Override 
      public void onClick(View view) 
      { 
       // Start next activity 
       Intent i = new Intent(DateSetup.this, TimeSetup.class); 

       // Send data start data and End Date 
       //i.putExtra("START", startDate); 
       //i.putExtra("END", endDate); 
       i.putExtra("START", fromDateEtxt.getText().toString()); 
       i.putExtra("END", toDateEtxt.getText().toString()); 

       //i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 

       DateSetup.this.startActivity(i); 
      } 
     }); 


     // History view 
     btnHistory.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v2) 
      { 
       Intent myIntent2 = new Intent(DateSetup.this, HistoryView.class); 
       myIntent2.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
       DateSetup.this.startActivity(myIntent2); 
      } 
     }); 


     // Future Settings View 
     btnFuture.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       Intent myIntent3 = new Intent(DateSetup.this, CurrentView.class); 
       myIntent3.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
       DateSetup.this.startActivity(myIntent3); 

      } 
     }); 


     // Manual Control 
     btnManual.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       Intent myIntent4 = new Intent(DateSetup.this, IrrigationControl.class); 
       myIntent4.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
       DateSetup.this.startActivity(myIntent4); 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     //getMenuInflater().inflate(R.menu.date_setup, menu); 
     //getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    @Override 
    public void onClick(View view) 
    { 
     if(view == fromDateEtxt) 
     { 
      fromDatePickerDialog.show(); 
     } 
     else if(view == toDateEtxt) 
     { 
      toDatePickerDialog.show(); 
     } 
    } 

} 

TimeSetup2 클래스는

public class TimeSetup2 extends TimeSetup 
{ 
    Button btnBck; 
    Button btnSetDatesandTime; 

    String minutedisplay2; 
    String hourdisplay2; 

    private DataDBAdapter2 Database; 

    private TimePicker timePicker2; 

    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.time_setup2); 

     btnBck = (Button) findViewById(R.id.btnBack); 
     btnSetDatesandTime = (Button) findViewById(R.id.btnSet); 
     timePicker2 = (TimePicker)findViewById(R.id.timePicker2); 

     Database = new DataDBAdapter2(this); 
     Database.open(); 

     // Back to previous activity 
     // http://stackoverflow.com/questions/4038479/android-go-back-to-previous-activity 
     btnBck.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       Intent myIntent = new Intent(TimeSetup2.this, TimeSetup.class); 
       TimeSetup2.this.startActivity(myIntent); 
      } 
     }); 



     // Set time and dates 
     btnSetDatesandTime.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) 
      { 
       // Generate random number for ID 
       Random r = new Random(); 
       int i2 = r.nextInt(100-1) + 100; 

       // Convert from integer to string 
       String random2 = Integer.toString(i2); 


       //------------------------------------------------------ 
       // Data from other classes to be sent to the database 
       //------------------------------------------------------ 
       Intent intent = getIntent(); 

       // Start Date and End date data 
       String StartD = intent.getStringExtra("START"); 
       String EndD = intent.getStringExtra("END"); 

       // Time Picker 1 Data (Working) 
       String StartTime1 = intent.getStringExtra("TIMEHOUR1"); 
       String EndTime1 = intent.getStringExtra("TIMEMIN1"); 

       // Time Picker 2 Data 
       //String StartTime2 = intent.getStringExtra("TIMEHOUR2"); 
       //String EndTime2 = intent.getStringExtra("TIMEMIN2"); 
       hourdisplay2 = timePicker2.getCurrentHour().toString(); 
       minutedisplay2 = timePicker2.getCurrentMinute().toString(); 

       // Send data to the Database 
       Database.insertData2(random2, StartD, EndD, StartTime1 + ":" + EndTime1, hourdisplay2 + ":" + minutedisplay2); 

       // Send data to the arduino board 

       // Show Message that the data has been sent 
       Toast.makeText(getApplicationContext(), "Irrigation Setups have been sent", Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 

} 

나는 일이 문제를 해결하기 위해 노력에 붙어 있었어요. 그것은 아마 내가 누락 된 정말 간단하지만 그것을 알아낼 수 없습니다.

+0

의도 항목에 START 및 END를 넣었으나 TIMEHOUR1 및 TIMEMIN1이 표시되지 않으므로 null 문자열이 표시 될 수 있습니다. – WLGfx

답변

0

OS 친화적 인 유일한 데이터 유형은 기본 유형 (int, long, float, boolean 등)이므로 putExtra()를 사용하면 프리미티브 만 저장할 수 있습니다. 그래서 Calendar 객체를 보낼 수 없습니다.

다음 활동에 기간 문자열을 보내십시오.

+0

변수를 문자열로 설정했지만 불행히도 행운은 없습니다. –

관련 문제