Autore Topic: Problemi con shared preference e FC  (Letto 723 volte)

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Problemi con shared preference e FC
« il: 04 Novembre 2010, 11:19:24 CET »
0
ciao a tutti...
allora sono arrivato a partorire questo codice:

dovrebbe prendere il budget mensile, suddividerlo per 30 giorni, e si ottiene il budget giornaliero.
Se premo il tasto Button, prende la data di oggi e la moltiplica per il budget giornaliero e calcola ad oggi quanto posso spendere
Nella seconda EditView posso immettere eventuali spese da sottrarre al credito residuo, che tramite il metodo sharedPreference, viene salvato e visualizzato (momentaneamente) in una TextView più in basso (outputData).
Il problema è che appena schiaccio sul Button, il programma va in FC e si pianta... mi aiutereste a capire dove ho sbagliato?
Fino a che non inserivo il metodo per salvare il dato era tutto ok....
Grazie infinite per l'aiuto... (prima avevo sbagliato sezione, spero di aver beccato la sezione giusta... perdonatemi se non allego il logcat ma prima devo capire come si fa :-)  )

Questo è il credito.java:

Codice (Java): [Seleziona]
package com.credito;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.Calendar;
import java.util.GregorianCalendar;




public class credito extends Activity {
    /** Called when the activity is first created. */
    private final static String MY_PREFERENCES = "MyPref";
    // Costante relativa al nome della particolare preferenza
    private final static String TEXT_DATA_KEY = "textData";
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        updatePreferencesData();
       
        Button updateButton = (Button)findViewById(R.id.Button);
        updateButton.setOnClickListener(new OnClickListener(){
           
            @Override
            public void onClick(android.view.View v) {
                EditText etxt1 = (EditText)findViewById(R.id.saldomese);
                TextView credigio = (TextView)findViewById(R.id.credigio);
                TextView saldoaccu = (TextView)findViewById(R.id.saldoaccu);
                EditText spesa = (EditText)findViewById(R.id.spesa);
                TextView residuo = (TextView)findViewById(R.id.residuo);
               
                //calcolo il saldo giornaliero
                String val1str = etxt1.getText().toString();
                int val1 = Integer.parseInt(val1str);
                credigio.setText(""+(val1/30));
               
                //calcolo il giorno di oggi
                GregorianCalendar gc = new GregorianCalendar();
                String data = "" + gc.get(Calendar.DAY_OF_MONTH);
               
               
                //calcolo il credito residuo ad oggi
                String credito = credigio.getText().toString();
                int val5 = Integer.parseInt(data);
                int val6 = Integer.parseInt(credito);
                saldoaccu.setText(""+(val5*val6));
               
                //calcolo quanto ancora posso spendere
                String spesastr = spesa.getText().toString();
                int val7 = Integer.parseInt(spesastr);
                residuo.setText(""+((val5*val6)-val7));
               
                 // Otteniamo il riferimento alle Preferences
                SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
                // Otteniamo il corrispondente Editor
                SharedPreferences.Editor editor = prefs.edit();
                // Modifichiamo il valore con quello inserito nell'EditText
                EditText outputView = (EditText) findViewById(R.id.residuo);
                CharSequence textData = outputView.getText();
                if (textData != null) {
                        // Lo salviamo nelle Preferences
                        editor.putString(TEXT_DATA_KEY, textData.toString());
                        editor.commit();
                }
                updatePreferencesData();
            }
           
       
       
    });

           
        }

    private void updatePreferencesData() {
         // Leggiamo le Preferences
        SharedPreferences prefs = getSharedPreferences(MY_PREFERENCES, Context.MODE_PRIVATE);
        // Leggiamo l'informazione associata alla proprietà TEXT_DATA
        String textData = prefs.getString(TEXT_DATA_KEY, "No Preferences!");
        // Lo impostiamo alla TextView
        TextView outputView = (TextView) findViewById(R.id.outputData);
        outputView.setText(textData);
       
    };
    }

mentre qui c'è il file main.xml:


Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
android:id="@+id/widget41"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/saldotext"
android:layout_width="wrap_content"
android:layout_height="22px"
android:text="Saldo mensile:"
>
</TextView>
<EditText
android:id="@+id/saldomese"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="250"
android:textSize="18sp"
>
</EditText>
<TextView
android:id="@+id/widget36"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Credito giornaliero:"
>
</TextView>
<TextView
android:id="@+id/credigio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
>
</TextView>
<TextView
android:id="@+id/widget38"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Credito accumulato:"
>
</TextView>
<TextView
android:id="@+id/saldoaccu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="20"
>
</TextView>
<TextView
android:id="@+id/widget40"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Spese mensili:"
>
</TextView>
<EditText
android:id="@+id/spesa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
android:textSize="18sp"
>
</EditText>
<TextView
android:id="@+id/widget43"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Credito residuo:"
>
</TextView>
<TextView
android:id="@+id/residuo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="0"
>
</TextView>

<Button android:text="Premi qui per calcolare"
android:id="@+id/Button"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
 </Button>



 <TextView
               
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:layout_alignBaseline="@+id/TextView02"
               android:layout_toRightOf="@+id/TextView02"
               android:layout_alignParentRight="true"
               android:layout_alignLeft="@+id/inputData"
               android:id="@+id/outputData"></TextView>

</TableLayout>
« Ultima modifica: 06 Novembre 2010, 13:11:17 CET da JD, Reason: Usate i bbcode java e xml!! xD »

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #2 il: 04 Novembre 2010, 11:46:52 CET »
0
ok...mi da questo:
Codice: [Seleziona]
11-04 10:44:55.924: ERROR/AndroidRuntime(444): FATAL EXCEPTION: main
11-04 10:44:55.924: ERROR/AndroidRuntime(444): java.lang.ClassCastException: android.widget.TextView
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at com.credito.credito$1.onClick(credito.java:67)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.view.View.performClick(View.java:2408)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.view.View$PerformClick.run(View.java:8816)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.os.Handler.handleCallback(Handler.java:587)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.os.Looper.loop(Looper.java:123)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at android.app.ActivityThread.main(ActivityThread.java:4627)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at java.lang.reflect.Method.invokeNative(Native Method)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at java.lang.reflect.Method.invoke(Method.java:521)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at dalvik.system.NativeStart.main(Native Method)

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problemi con shared preference e FC
« Risposta #3 il: 04 Novembre 2010, 12:59:59 CET »
0
Se provi a postare il progetto eclipse, provo a dargli un'occhiata.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #4 il: 04 Novembre 2010, 13:08:34 CET »
0
Grazie mille...l'ho zippato e l'ho allegato qui (non so se c'era altro modo per farlo..)


Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problemi con shared preference e FC
« Risposta #5 il: 04 Novembre 2010, 13:35:33 CET »
0
Nella riga 67:
Codice (Java): [Seleziona]
                EditText outputView = (EditText) findViewById(R.id.residuo);
tu prendi un edittext, mentre nel file xml è definito come textview.

tutto quì.
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #6 il: 04 Novembre 2010, 14:44:42 CET »
0
Gulp! Era solo quello??    o_O

pensavo che Eclipse me lo segnalasse in qualche modo..
tu come hai fatto a capire che era quello il problema? c'è qualche trucco oppure hai letto riga per riga il programma?

per capire!  ;-)

cmq grazie infinite!!!

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problemi con shared preference e FC
« Risposta #7 il: 04 Novembre 2010, 16:01:11 CET »
0
Devi analizzare lo stacktrace dell'eccezione sollevata:
Codice: [Seleziona]
11-04 10:44:55.924: ERROR/AndroidRuntime(444): java.lang.ClassCastException: android.widget.TextView
11-04 10:44:55.924: ERROR/AndroidRuntime(444):     at com.credito.credito$1.onClick(credito.java:67)

Come vedi l'errore è sollevato alle riga 67 della classe credito

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #8 il: 04 Novembre 2010, 16:17:12 CET »
0
E tutti gli altri errori? Cosa sono?

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3487
  • Respect: +506
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Problemi con shared preference e FC
« Risposta #9 il: 04 Novembre 2010, 16:19:59 CET »
0
Niente di cui, in questa fase, di devi preoccupare :)

Offline Qlimax

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 757
  • Respect: +202
    • Google+
    • _Qlimax
    • Mostra profilo
    • www.egsolutions.ch
  • Dispositivo Android:
    Galaxy Nexus - Nexus One - Wildfire - Magic
  • Play Store ID:
    egsolutions.ch
  • Sistema operativo:
    Ubuntu 12.04, Windows 7
Re:Problemi con shared preference e FC
« Risposta #10 il: 04 Novembre 2010, 16:26:01 CET »
0
smartgatto, quando posti il codice, puoi usare i tag java   O:-). Così risulta tutto più leggibile

[**code=java]  [**/code]  senza asterischi .  per xml [**code=xml]  [**/code]

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problemi con shared preference e FC
« Risposta #11 il: 04 Novembre 2010, 16:27:50 CET »
+1
Gulp! Era solo quello??    o_O

pensavo che Eclipse me lo segnalasse in qualche modo..
tu come hai fatto a capire che era quello il problema? c'è qualche trucco oppure hai letto riga per riga il programma?

per capire!  ;-)

cmq grazie infinite!!!

Ho controllato la riga 67, ed ho visto che richiedevi un elemento di tipo EditText.
Visto che l'errore segnalato è relativo ad un Cast Exception, vuol dire probabilmente l'elemento preso non è di quel tipo, per cui.....
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #12 il: 04 Novembre 2010, 16:51:38 CET »
0
smartgatto, quando posti il codice, puoi usare i tag java   O:-). Così risulta tutto più leggibile

[**code=java]  [**/code]  senza asterischi .  per xml [**code=xml]  [**/code]

chiedo venia, pensavo che fosse sufficiente il code  :-[   :-)

Offline smartgatto

  • Utente junior
  • **
  • Post: 96
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S5
  • Sistema operativo:
    Windows 7
Re:Problemi con shared preference e FC
« Risposta #13 il: 04 Novembre 2010, 16:54:21 CET »
0
Ho controllato la riga 67, ed ho visto che richiedevi un elemento di tipo EditText.
Visto che l'errore segnalato è relativo ad un Cast Exception, vuol dire probabilmente l'elemento preso non è di quel tipo, per cui.....

Ho capito..grazie mille!!
Posso copiarti la firma "(Tried to sent from their iPhone 4, but no signal was detected)
sent from my Galaxy-S" per tapatalk? è bellissima!!!    :D  :D  :D

Offline 7h38ugg3r

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1200
  • Respect: +133
    • riccardofischetti
    • th38ugg3r
    • @7h38ugg3r
    • Mostra profilo
  • Dispositivo Android:
    Galaxy-S GT I-9000/ ASUS Eee Pad Transformer
  • Play Store ID:
    Riccardo Fischetti
  • Sistema operativo:
    OS X Lion / Linux Mint 11 (Katya)
Re:Problemi con shared preference e FC
« Risposta #14 il: 04 Novembre 2010, 17:55:25 CET »
0
beh, così non sarà più tanto originale, ma se ti piace......;)
7h38ugg3r<=>thebugger
Non conosci Java? Allora sei nel posto sbagliato!

http://www.androidpatterns.com/