Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237

    [Android] Riutilizzo oggetti reference

    Ciao a tutti
    Ho cominciato da pochi giorni a imparare un po' di java perché mi sto cimentando con la creazione di alcune piccole app per android che mi serviranno.
    Di java non conosco praticamente nulla ma conosco abbastanza bene VB.NET e le basi dell'OOP.
    Per android sto seguendo un libro e sto provando a ricopiare un esempio che propongono loro.
    Un dubbio:
    codice:
    TextView tx;
            tx = (TextView) findViewById(R.id.tx_definisci);
            tx.setText(perc + "%");
    
            tx = (TextView) findViewById(R.id.tx_definisciMancia);
            tx.setText(String.format("%.02F",totale *perc*0.01));
    Questo codice mi fa crashare l'app
    Creo un oggetto TextView, gli assegno il riferimento alla mia textview che ho nella GUI e setto il valore.
    La riga successiva è per assegnare un nuovo reference a tx e fare la stessa cosa delle righe sopra. Su VB.NET so per certo che l'assegnazione di un nuovo riferimento con lo stesso tipo di oggetto non da nessun problema.. Per java come funziona??
    Ma si possono debaggare i sorgenti riga per riga, se si sviluppa per android?
    Linebreak non funziona..

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Ho qualche dubbio che il formato "%.02F" sia corretto
    Sulla documentazione "F" non c'è, c'è solo "f" (ma magari su Android è diverso, non lo so)

    Quindi, errore ottenuto?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ciao
    grazie intanto per la risposto. Per quanto riguarda la f o la F non sono arrivato a testare il programma fino a quel punto. Dovrei guardare il libro da cui ho copiato il codice.
    il mio dubbio riguarda la creazione di una variabile e l'assegnazione del riferimento. Come l'ho scritta io non funziona. Errori? In fase di compilazione nessuno, e quando testo il programma nel Avd che mi dice che la app ha smesso di funzionare. Non riesco a fare il debug li n e by line, per capire meglio. Non so se è un limite dell'IDE o io che non sono in grado. ..

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Guarda che fare

    codice:
    Classe c;
    
    c = blabla.getQualcosa();
    c.faiQualcosa();
    
    c = blabla.getQualcosaltro();
    c.faiQualcosa();
    è perfettamente legale...


    L'unico errore che vedo nel tuo codice è quella F (tralasciando il metodo findViewById, che non so come funzioni...)
    e provo ad eseguire il format in quel modo ottengo questa eccezione:
    codice:
    Exception in thread "main" java.util.UnknownFormatConversionException: Conversion = 'F'
    Usa "%.2f"
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Grazie per aver provato.
    Credo che a questo punto dipenda nello specifico da come funziona java e android. Infatti nel libro che sto studiando non usano il codice che ho scritto io ma creano una variabile per ogni elemento della GUI e poi lo referenziano con findbyId. Forse il codice che usa la stessa variabile cambiando solo il riferimento non è corretto. Non so... qualche esperto di android?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da renygade
    Forse il codice che usa la stessa variabile cambiando solo il riferimento non è corretto.
    Te lo ha già detto Alex'87 ma lo ribadisco io.

    Fare:
    codice:
    TextView tx;
    tx = (TextView) findViewById(R.id.tx_1);
    tx.setText( ..... );
    
    tx = (TextView) findViewById(R.id.tx_2);
    tx.setText( ..... );
    solo ai fini di questi setText, è funzionalmente esattamente uguale a fare:

    codice:
    TextView tx1 = (TextView) findViewById(R.id.tx_1);
    tx1.setText( ..... );
    
    TextView tx2 = (TextView) findViewById(R.id.tx_2);
    tx2.setText( ..... );
    Questo non centra con Android e varrebbe per Java come C# o altri linguaggi. Nel primo caso stai semplicemente riusando una variabile.
    È chiaro che se avessi bisogno di tenere più a lungo o in modo più "permanente" un riferimento al tx_1 per fare successivamente altro ... il primo scenario non va bene ma credo che ci arrivi anche tu, giusto?

    Ma ripeto: ai fini di fare dei "setup" immediatamente dopo aver ottenuto il reference, i due scenari sono entrambi leciti e corretti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ok. Grazie per la risposta. Ora sono via ma quando torno a casa provo. Il problema è che il compilare non mi da nessun errore, e proprio il programma sull'emulatore che va in crash senza specificare perché. .
    Provo e vi faccio sapere

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da renygade
    il programma sull'emulatore che va in crash senza specificare perché.
    In Eclipse: Window-> Show View -> Other -> Android-> Logcat.
    Se c'è un problema/eccezione, lo vedi .
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    237
    Ok. confermo: l'errore era proprio quella "F" che andava minuscola e non maiuscola
    codice:
    tx.setText(String.format("%.02f",totale *perc*0.01));
    Così è corretto...
    Certo, un banale errore di sintassi, ma vedendo da Vb.net che non è case sensitive..
    Come IDE uso questo http://www.jetbrains.com/idea/features/android.html
    Perché la versione di Eclipse che avevo scaricato assieme all'android SDK è un disastro: crasha ogni 2 x 3 invece questo IDE mi pare abbastanza stabile e funzionale.
    Ho trovato una finestra "ANDROID MONITOR" dove c'è la voce logcat ma devo ancora capire bene come funziona e si interpretano gli errori.
    Mi sa che avrò ancora bisogno di voi..
    Intanto mille grazie per l'aiuto!

  10. #10
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Originariamente inviato da renygade
    Ok. confermo: l'errore era proprio quella "F" che andava minuscola e non maiuscola
    codice:
    tx.setText(String.format("%.02f",totale *perc*0.01));
    Così è corretto...
    Certo, un banale errore di sintassi, ma vedendo da Vb.net che non è case sensitive..
    Non è questione di case sensitive: in quel contesto 'f' ed 'F' hanno significati diversi, come puoi vedere nella javadoc:

    'f' floating point The result is formatted as a decimal number
    'F' ISO 8601 complete date formatted as "%tY-%tm-%td".
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.