Autore Topic: Calcolo (aggiungere giorni)  (Letto 1470 volte)

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Calcolo (aggiungere giorni)
« il: 12 Agosto 2013, 14:49:42 CEST »
0
Buongiorno,
ancora una volta siete riusciti ad illuminarmi..grazie!

Avrei un altra domanda:
ho due caselle di testo ed un botton
In una casella ho la data corrente, nell'altra numero giorni da aggiungere.
Vorrei che la data aumentasse di tot giorni quanti ne indico nella casella.
Il mio codice al momento e' questo:
Codice (Java): [Seleziona]
 button.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View arg0) {
                Toast.makeText(getApplicationContext(), ""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear), Toast.LENGTH_SHORT).show();  }
                       
        }});
       
        //
        mDateDisplay.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(0);
            }
        });
 
        final Calendar c = Calendar.getInstance();
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);
     //   c.add(Calendar.DAY_OF_MONTH, 10);
        updateDisplay();}

mi aiutate? Dove sbaglio?
« Ultima modifica: 12 Agosto 2013, 14:51:24 CEST da Michele77 »

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #1 il: 12 Agosto 2013, 15:18:46 CEST »
0
Prova con
Codice (Java): [Seleziona]
c.add(Calendar.DATE, 10);
 :-)
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #2 il: 17 Agosto 2013, 10:49:10 CEST »
0
Purtroppo non funziona.
Mi restituisce sempre la data corrente...come faccio a dirgli di utilizzare la data presente nella textView?
« Ultima modifica: 17 Agosto 2013, 17:01:27 CEST da Michele77 »

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #3 il: 17 Agosto 2013, 17:12:06 CEST »
0
Cosa intendi per non funziona? Non incrementa la data o ti restituisce qualche errore?
Io utilizzo il metodo
Codice (Java): [Seleziona]
c.add(Calendar.DATE, 10);
per incrementare i giorni e non ho alcun problema. Prova a farti stampare i giorni dopo l'incremento, così da escludere che l'errore sia nell'updateDisplay()
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #4 il: 17 Agosto 2013, 17:19:40 CEST »
0
La data la incrementa, ma solo la data corrente.
Mi spiego meglio.
Ho un Pulsante e due textview; nella prima texview se faccio click e si apre il datapicker , imposto la data che viene visualizzata nella textview.
Nell'altra textview inserisco i numeri di giorni da aggiungere alla precedente data.
Se faccio click sul pulsante vorrei che apparisse un toast con la data 'aggiornata' (con i giorni aggiunti).
Spero di essere stato chiaro...se vuoi posto il mio codice completo
Codice (Java): [Seleziona]
@Override
                public void onClick(View arg0) {
                                int daysToAdd =Integer.parseInt(txtGiorni.getText().toString());
                                        //updateDisplay();
                                 final Calendar c = Calendar.getInstance();
                             
                                 c.add(Calendar.DAY_OF_MONTH, daysToAdd);
                               mYear = c.get(Calendar.YEAR);
                              mMonth = c.get(Calendar.MONTH);
                            mDay = c.get(Calendar.DAY_OF_MONTH);
                             
                                updateDisplay();
                               
                         TextView tv = (TextView)findViewById(R.id.textView1);
                 tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear)+"-"+"gg:"+(daysToAdd));
               
       }});
« Ultima modifica: 17 Agosto 2013, 17:25:49 CEST da Michele77 »

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #5 il: 17 Agosto 2013, 17:33:13 CEST »
+1
Penso di aver capito quello che vuoi ottenere.
Allora, supponendo che dp sia il tuo DatePicker in cui è impostata la data:

Codice (Java): [Seleziona]
final Calendar c = Calendar.getInstance();
c.set(dp.getYear(), dp.getMonth(), dp.getDayOfMonth());
c.add(Calendar.DAY_OF_MONTH, daysToAdd);
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);

Il resto lascialo invariato, inserisci soltanto la riga in più (c.set(...))
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #6 il: 17 Agosto 2013, 17:55:03 CEST »
0
Bravo hai afferato il mio intento... ma io non ho inserito DataPicker (nel xml)
ti posto tutto il codice

Codice (Java): [Seleziona]
public class InfoActivity extends Activity {

        Button button;

        final Context context = this;
    protected TextView mDateDisplay;
    EditText txtOre;
    protected int mYear;
    protected int mMonth;
    protected int mDay;
    protected int maGG;
   

        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
        setContentView(R.layout.info);
           
       
        mDateDisplay = (TextView) findViewById(R.id.textData1);
        button = (Button) findViewById(R.id.btnCalcola);
        txtOre=(EditText)findViewById(R.id.txtOre);
           
        button.setOnClickListener(new OnClickListener() {
                final Calendar c = Calendar.getInstance();
                   
     
                        @Override
                public void onClick(View arg0) {
                                int daysToAdd =Integer.parseInt(txtOre.getText().toString());
                                        //updateDisplay();
               
               
                                 c.add(Calendar.DAY_OF_MONTH, daysToAdd);
                               mYear = c.get(Calendar.YEAR);
                              mMonth = c.get(Calendar.MONTH);
                    mDay = c.get(Calendar.DAY_OF_MONTH);
                             
                                updateDisplay();
                               
                         TextView tv = (TextView)findViewById(R.id.textView1);
                 tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear)+"-"+"g:"+(daysToAdd));
               
       }});
       
        //
        mDateDisplay.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                showDialog(0);
            }
        });
 
        final Calendar c = Calendar.getInstance();
     //  c.add(Calendar.DATE, daysToAdd);
        mYear = c.get(Calendar.YEAR);
      mMonth = c.get(Calendar.MONTH);
       mDay = c.get(Calendar.DAY_OF_MONTH);
     
        updateDisplay();}
       
        protected void updateDisplay() {
            mDateDisplay.setText(
                new StringBuilder()
                        .append(mDay).append("-")
                        .append(mMonth + 1).append("-")
                        .append(mYear).append(" "));
        }
        protected DatePickerDialog.OnDateSetListener mDateSetListener =
                new DatePickerDialog.OnDateSetListener() {
                    public void onDateSet(DatePicker view, int year,
                                          int monthOfYear, int dayOfMonth) {
                        mYear = year;
                        mMonth = monthOfYear;
                        mDay = dayOfMonth;
                        updateDisplay();
                    }
            };
            protected Dialog onCreateDialog(int id) {
                return new DatePickerDialog(this,
                            mDateSetListener,
                            mYear, mMonth, mDay);
                               
           
            }}
Sono alle prime armi...grazie mille

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #7 il: 17 Agosto 2013, 18:03:08 CEST »
+1
Prova, al posto del codice che ti avevo postato prima, con questo:
Codice (Java): [Seleziona]
final Calendar c = Calendar.getInstance();
c.set(mYear, mMonth, mDay);
c.add(Calendar.DAY_OF_MONTH, daysToAdd);
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #8 il: 17 Agosto 2013, 18:08:28 CEST »
0
Grazie, sei un grande!!!

Post unito: 18 Agosto 2013, 15:16:23 CEST
Scusami Vincenzoc, mi potresti spiegare una cosa?

Perché non mi funziona la checkbox?

Codice (Java): [Seleziona]
public void onClick(View arg0) {
                                int daysToAdd =Integer.parseInt(txtOre.getText().toString());
                        //              updateDisplay();
                                final Calendar c = Calendar.getInstance();
                                c.set(mYear, mMonth, mDay);
                                if  (spin.getSelectedItem().equals("Successiva")){
                                                                       
                                        c.add(Calendar.DAY_OF_MONTH, daysToAdd);
                                        mYear = c.get(Calendar.YEAR);
                                        mMonth = c.get(Calendar.MONTH);
                                        mDay = c.get(Calendar.DAY_OF_MONTH);
                                        TextView tv = (TextView)findViewById(R.id.textView1);
                                 tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                                       
                        }else if(spin.getSelectedItem().equals("Precedente")){//(rb.isChecked()){
                               
                                c.add(Calendar.DAY_OF_MONTH, - daysToAdd);
                                mYear = c.get(Calendar.YEAR);
                                mMonth = c.get(Calendar.MONTH);
                                mDay = c.get(Calendar.DAY_OF_MONTH);
                                TextView tv = (TextView)findViewById(R.id.textView1);
                         tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                               
                        }else if (spin.getSelectedItem().equals("Successiva"))&&((checkBox01.isChecked())){                                    
                                c.set(mYear, mMonth, mDay);
                                c.add(Calendar.DATE,45);
                                mYear = c.get(Calendar.YEAR);
                                mMonth = c.get(Calendar.MONTH);
                                mDay = c.get(Calendar.DAY_OF_MONTH);
                       

                                TextView tv = (TextView)findViewById(R.id.textView1);
         tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                           }
« Ultima modifica: 18 Agosto 2013, 15:17:06 CEST da Michele77 »

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #9 il: 18 Agosto 2013, 18:08:43 CEST »
0
In che senso non funziona? Non si avvera mai il "checkBox01.isChecked()"?
Puoi postare altro codice riguardante il CheckBox?
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #10 il: 18 Agosto 2013, 19:42:49 CEST »
0
Esatto! E' come se non tenga in considerazione l'evento isChecked
In pratica restituisce sempre il valore (daysToAdd).

Codice (Java): [Seleziona]
public class InfoActivity extends Activity {

        Button button;
CheckBox checkBox01;
...
 checkBox01 = (CheckBox) findViewById(R.id.checkBox01);
  button.setOnClickListener(new OnClickListener() {
e il codice precedentemente inserito

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #11 il: 18 Agosto 2013, 22:57:08 CEST »
+1
Si è normale che avvenga questo perché si avvera il primo if e gli altri non vengono considerati. Modifica il primo if così
Codice (Java): [Seleziona]
if  (spin.getSelectedItem().equals("Successiva") && !(checkBox01.isChecked())){...
:)
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #12 il: 19 Agosto 2013, 10:30:17 CEST »
0
Mi continua a dare errore:
Codice (Java): [Seleziona]
        public void onClick(View arg0) {
                                int daysToAdd =Integer.parseInt(txtOre.getText().toString());
                                        updateDisplay();
                                final Calendar c = Calendar.getInstance();
                                c.set(mYear, mMonth, mDay);
                                if  (spin.getSelectedItem().equals("Successiva") && !(checkBox01.isChecked())){ //if  (spin.getSelectedItem().equals("Successiva")){
                                                                       
                                        c.add(Calendar.DAY_OF_MONTH, 45);
                                        mYear = c.get(Calendar.YEAR);
                                        mMonth = c.get(Calendar.MONTH);
                                        mDay = c.get(Calendar.DAY_OF_MONTH);
                                        TextView tv = (TextView)findViewById(R.id.textView1);
                                 tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                        //       updateDisplay();
                        }else if(spin.getSelectedItem().equals("Precedente")){//(rb.isChecked()){
                                updateDisplay();
                                c.add(Calendar.DAY_OF_MONTH, - daysToAdd);
                                mYear = c.get(Calendar.YEAR);
                                mMonth = c.get(Calendar.MONTH);
                                mDay = c.get(Calendar.DAY_OF_MONTH);
                                TextView tv = (TextView)findViewById(R.id.textView1);
                         tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                               
                        }else if (spin.getSelectedItem().equals("Successiva"))){
                      updateDisplay();
                                c.set(mYear, mMonth, mDay);
                                c.add(Calendar.DATE,daysToAdd);
                                mYear = c.get(Calendar.YEAR);
                                mMonth = c.get(Calendar.MONTH);
                                mDay = c.get(Calendar.DAY_OF_MONTH);
                         
                                                        TextView tv = (TextView)findViewById(R.id.textView1);
         tv.setText(""+(mDay)+"-"+((mMonth + 1))+"-"+(mYear));
                           }
« Ultima modifica: 19 Agosto 2013, 12:19:08 CEST da Michele77 »

Offline vincenzoc

  • Utente junior
  • **
  • Post: 148
  • Respect: +47
    • Google+
    • cerminarav
    • Mostra profilo
    • Mie applicazioni sul Play Store
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Vincenzo Cerminara
  • Sistema operativo:
    Arch Linux
Re:Calcolo (aggiungere giorni)
« Risposta #13 il: 19 Agosto 2013, 12:28:54 CEST »
0
Che errore ti da? Comunque hai una parentesi chiusa in più nell'ultimo else if.

L'ultimo else if lascialo come'era
Codice (Java): [Seleziona]
else if (spin.getSelectedItem().equals("Successiva"))&&((checkBox01.isChecked())){...
Ringrazia chi ti aiuta sul forum con l'apposito pulsante :P
Scarica Yazzy

Offline Michele77

  • Nuovo arrivato
  • *
  • Post: 44
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    htc desire hd
  • Sistema operativo:
    windows
Re:Calcolo (aggiungere giorni)
« Risposta #14 il: 19 Agosto 2013, 12:34:19 CEST »
0
Va in crash l'applicazione