Autore Topic: errorre nell'activity per edittext  (Letto 1013 volte)

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
errorre nell'activity per edittext
« il: 30 Gennaio 2012, 19:32:39 CET »
0
Salve ragazzi ho una edit text in un file xml di questo tipo :
Codice (XML): [Seleziona]
<EditText
             android:textSize="18dp"
             android:hint="Inserisci l'importo"
             android:text="0"
         android:layout_height="wrap_content"
         android:inputType="numberDecimal"
         android:id="@+id/editText2"
         android:layout_width="200dp"
         ></EditText>

e poi ho un'activity che utilizza quello che scrivo in essa :
Codice (Java): [Seleziona]
 Button salva = (Button) findViewById(R.id.imageButton7);
        salva.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                        EditText entrata = (EditText)findViewById(R.id.editText1);
                        String entrata1 = entrata.getText().toString();
                       
                        EditText importo = (EditText)findViewById(R.id.editText2);
                        String importo1 = importo.getText().toString();
                    float importo2=Float.parseFloat(importo1);
                       
                        TextView data = (TextView)findViewById(R.id.dateDisplay);
                        String data1 = data.getText().toString();
                       
                        Button categoria = (Button)findViewById(R.id.button_cat_ness);
                        String categoria1 = categoria.getText().toString();//Questo per il text del button
                        int id = categoria.getResources().getIdentifier(categoria1, "drawable", getPackageName());
                       
                        EditText note = (EditText)findViewById(R.id.editText4);
                        String note1 = note.getText().toString();
                        int questo =  1;
                       
                        if (importo1.equals("0")) {
                                Toast.makeText(getApplicationContext(), "Inserisci un'importo per salvare oppure torna indietro", Toast.LENGTH_SHORT).show();
                   
                    }else {
                        MyDatabase db=new MyDatabase(getApplicationContext());
                        db.open();
                    db.insertEntrata(entrata1, -importo2, questo,  data1, categoria1, id, note1 );
                db.close();
                   
                mai=new Intent(getApplicationContext(), MioActivity.class);
                startActivity(mai);
                finish();
                    }  
            }
        });

prima mi andava in crash quando cliccavo sul tasto e non avevo inserito l'importo nella edittext che vi ho postato, quindi l'ho modificata inserendo il'if che vedete alla fine del codice java che vi ho postato, ma con l'handicap di avere per forza una inizializzazione a "0" della edittext xchè non rieco a immettere  nell'if la stringa vuota , come posso fare?
 aiutatemi pleace  :-(

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #1 il: 30 Gennaio 2012, 19:37:13 CET »
0
infatti prima dell'if mi dava questo logcat
Codice: [Seleziona]
01-30 19:34:05.526: E/AndroidRuntime(271): FATAL EXCEPTION: main
01-30 19:34:05.526: E/AndroidRuntime(271): java.lang.NumberFormatException:
01-30 19:34:05.526: E/AndroidRuntime(271):         at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305)
01-30 19:34:05.526: E/AndroidRuntime(271):         at java.lang.Float.parseFloat(Float.java:291)
01-30 19:34:05.526: E/AndroidRuntime(271):         at com.de.Risparmia.Uscite$3.onClick(Uscite.java:56)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.view.View.performClick(View.java:2408)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.view.View$PerformClick.run(View.java:8816)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.os.Handler.handleCallback(Handler.java:587)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.os.Handler.dispatchMessage(Handler.java:92)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.os.Looper.loop(Looper.java:123)
01-30 19:34:05.526: E/AndroidRuntime(271):         at android.app.ActivityThread.main(ActivityThread.java:4627)
01-30 19:34:05.526: E/AndroidRuntime(271):         at java.lang.reflect.Method.invokeNative(Native Method)
01-30 19:34:05.526: E/AndroidRuntime(271):         at java.lang.reflect.Method.invoke(Method.java:521)
01-30 19:34:05.526: E/AndroidRuntime(271):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-30 19:34:05.526: E/AndroidRuntime(271):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-30 19:34:05.526: E/AndroidRuntime(271):         at dalvik.system.NativeStart.main(Native Method)

come posso usare una if o simile per ovviare a questo nella mia acticity?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errorre nell'activity per edittext
« Risposta #2 il: 30 Gennaio 2012, 19:45:57 CET »
0
Evita di mettere 0 e quando prelevi la stringa dalla EditText controlla se la stringa é vuota.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #3 il: 01 Febbraio 2012, 12:31:09 CET »
0
ed è proprio questo il problema, come faccio a controllare che la stringa sia vuota ?

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errorre nell'activity per edittext
« Risposta #4 il: 01 Febbraio 2012, 12:38:31 CET »
0
Usando il metodo isEmpty() della classe String o verificando che la lunghezza restituita da length() sia uguale a 0.
Comunque questa non é una domanda riguardante lo sviluppo Android, ma Java. Inoltre é una cosa che si trova facilmente cercando online.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #5 il: 01 Febbraio 2012, 13:57:49 CET »
0
avevo gia provato con :
Codice (Java): [Seleziona]
TextUtils.isEmpty(importo1)
Codice (Java): [Seleziona]
importo1.matches("")
Codice (Java): [Seleziona]
importo1.trim().equals("")
Codice (Java): [Seleziona]
importo1.equals("")
Codice (Java): [Seleziona]
importo1..length() > 0
Codice (Java): [Seleziona]
importo1..length() == 0
ma niente di niente mi va sempre in crash

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errorre nell'activity per edittext
« Risposta #6 il: 01 Febbraio 2012, 15:43:08 CET »
0
Stai dicendo che una cosa del genere va in crash?
Codice (Java): [Seleziona]
String importo1 = importo.getText().toString();
float importo2;
if(!importo1.isEmpty())
   importo2 = Float.parseFloat(importo1);
Postate il LogCat LogCat LogCat LogCat LogCat

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #7 il: 01 Febbraio 2012, 16:30:09 CET »
0
si va in crash, e ti dirò di più la isEmpty() me la fa usare solo scrivendo così
Codice (Java): [Seleziona]
TextUtils.isEmpty(importo1)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errorre nell'activity per edittext
« Risposta #8 il: 01 Febbraio 2012, 17:32:52 CET »
0
Posta tutto il codice e il logcat
Postate il LogCat LogCat LogCat LogCat LogCat

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #9 il: 01 Febbraio 2012, 19:34:41 CET »
0
Codice (Java): [Seleziona]
 Button salva = (Button) findViewById(R.id.imageButton7);
        salva.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
               
               
                       
                        EditText entrata = (EditText)findViewById(R.id.editText1);
                        String entrata1 = entrata.getText().toString();
                       
                       
                        EditText importo = (EditText)findViewById(R.id.editText2);
                    String importo1=importo.getText().toString().trim();
                        float importo2=Float.parseFloat(importo1);
                       
                       
                        TextView data = (TextView)findViewById(R.id.dateDisplay);
                        String data1 = data.getText().toString();
                       
                        Button categoria = (Button)findViewById(R.id.button_cat_ness);
                        String categoria1 = categoria.getText().toString();//Questo per il text del button
                        int id = categoria.getResources().getIdentifier(categoria1, "drawable", getPackageName());
                       
                        EditText note = (EditText)findViewById(R.id.editText4);
                        String note1 = note.getText().toString();
                        int questo =  0;
                       
                        if (importo1.equals("")){
                                Toast.makeText(getApplicationContext(), "Inserisci un'importo per salvare oppure torna indietro", Toast.LENGTH_SHORT).show();
                   
                    }else {
                     
                        MyDatabase db=new MyDatabase(getApplicationContext());
                        db.open();
                    db.insertEntrata(entrata1, importo2, questo, data1, categoria1, id, note1 );
                    db.close();
                    mai=new Intent(getApplicationContext(), MioActivity.class);
                    startActivity(mai);
                    finish();
                    }
               
               
            }
        });
               

e questo è il logcat del crash appena clicco sul button salva
Codice: [Seleziona]
02-01 16:12:44.910: E/AndroidRuntime(791): FATAL EXCEPTION: main
02-01 16:12:44.910: E/AndroidRuntime(791): java.lang.NumberFormatException:
02-01 16:12:44.910: E/AndroidRuntime(791):         at org.apache.harmony.luni.util.FloatingPointParser.parseFloat(FloatingPointParser.java:305)
02-01 16:12:44.910: E/AndroidRuntime(791):         at java.lang.Float.parseFloat(Float.java:291)
02-01 16:12:44.910: E/AndroidRuntime(791):         at com.d.Risparmia.MioActivity2$3.onClick(MioActivity2.java:64)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.view.View.performClick(View.java:2408)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.view.View$PerformClick.run(View.java:8816)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.os.Handler.handleCallback(Handler.java:587)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.os.Handler.dispatchMessage(Handler.java:92)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.os.Looper.loop(Looper.java:123)
02-01 16:12:44.910: E/AndroidRuntime(791):         at android.app.ActivityThread.main(ActivityThread.java:4627)
02-01 16:12:44.910: E/AndroidRuntime(791):         at java.lang.reflect.Method.invokeNative(Native Method)
02-01 16:12:44.910: E/AndroidRuntime(791):         at java.lang.reflect.Method.invoke(Method.java:521)
02-01 16:12:44.910: E/AndroidRuntime(791):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-01 16:12:44.910: E/AndroidRuntime(791):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-01 16:12:44.910: E/AndroidRuntime(791):         at dalvik.system.NativeStart.main(Native Method)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:errorre nell'activity per edittext
« Risposta #10 il: 01 Febbraio 2012, 20:19:32 CET »
+1
E dove sono i controlli?
Tu qua cerchi di convertire senza fare nessun controllo:
Codice (Java): [Seleziona]
String importo1=importo.getText().toString().trim();
                        float importo2=Float.parseFloat(importo1);
Come ti ho scritto sopra dovresti scrivere una cosa del genere:
Codice (Java): [Seleziona]
String importo1 = importo.getText().toString().trim();
float importo2;
if(!importo1.isEmpty())
   importo2 = Float.parseFloat(importo1);
Devi tentare la conversione SOLO se la stringa NON é vuota.
Postate il LogCat LogCat LogCat LogCat LogCat

Offline deideidei

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Ubuntu 11.04
Re:errorre nell'activity per edittext
« Risposta #11 il: 02 Febbraio 2012, 12:12:05 CET »
0
Grazie mille  :D
Risolto, la frase chiave di tutta la discussione è
Citazione
Devi tentare la conversione SOLO se la stringa NON é vuota.
Grazie ancora e mi scuso per il disturbo  :-[