2016-10-11 5 views
0

Was ich habe, ist ein Kalender-Widget, das geöffnet wird, wenn gedrückt wird, und der Benutzer kann ihre Daten aus dem Kalender auswählen. Ich habe Variablen, um die in der DateSetup-Klasse eingegebenen Daten zu speichern, und ich folgte dem Code bei der Verwendung von putExtra(), um die Daten von einer Klasse zu einer anderen zu senden, aber die Werte werden nicht angezeigt.Android - Kalenderdaten werden nicht mit putExtra() gesendet

Der Prozess der Anwendung ist, wenn die Daten ausgewählt wurden, der Benutzer wird dann in der Lage sein, die Zeiten mit dem Zeitauswahl-Widget, das funktioniert, auszuwählen.

Nachdem die Daten und Zeiten ausgewählt wurden, werden die Werte an eine MySQL-Datenbank gesendet, in der die Datums-/Zeitwerte angezeigt werden sollen. Nur die ausgewählten Zeiten zeigen, aber nicht die Daten aus dem ausgewählten Kalender.

DateSetup Klasse

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 Klasse

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(); 
      } 
     }); 
    } 

} 

Ich habe gesteckt worden zu versuchen, dieses Problem zu Tage zu lösen. Es ist wahrscheinlich etwas sehr einfaches, was ich verpasse, aber ich kann es nicht herausfinden.

+0

Sie setzen START und ENDE in die Absicht Extras, aber ich sehe nicht TIMEHOUR1 und TIMEMIN1, so dass Sie wahrscheinlich Null Strings bekommen. – WLGfx

Antwort

0

Die einzigen Datentypen, die OS-freundlich sind, sind primitive Typen (int, long, float, boolean, etc ...), was bedeutet, dass putExtra() nur das Speichern von Primitiven erlaubt. Aus diesem Grund können Sie kein Kalenderobjekt senden.

Versuchen Sie, eine Zeichenfolge Ihrer Periode an Ihre nächste Aktivität zu senden.

+0

Ich setze die Variablen auf Strings aber leider immer noch kein Glück –

Verwandte Themen