2016-10-11 26 views
0

我所擁有的是按下時,用戶可以從日曆中選擇他們的日期打開日曆控件發送。我有變量來保存在DateSetup類中輸入的日期,並且我遵循使用putExtra()將數據從一個類發送到另一個類的代碼,但這些值沒有顯示出來。的Android - 日曆數據不被用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

你把開始和結束的意圖演員,但我沒有看到TIMEHOUR1和TIMEMIN1,所以你可能會得到空字符串。 – WLGfx

回答

0

是OS友好的唯一數據類型是基本類型(int,長,浮動,布爾等),這樣就意味着putExtra()允許你只存儲原語。這就是爲什麼你不能發送日曆對象。

請儘量把一段字符串發送到您的下一個活動。

+0

我將變量設置爲字符串,但不幸的是仍然沒有運氣 –