Autore Topic: Problema textView e setText()  (Letto 487 volte)

Offline roxdragon

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Ubuntu 10.04
Problema textView e setText()
« il: 05 Aprile 2014, 11:32:26 CEST »
0
Salve a tutti ho un applicazione che mi fa il parsing di una pagina web, prende il valore esempio 10.25 e dovrebbe stamparlo sulla textview.
Il problema sorge quando provo a settarlo, mi crasha l'app!
Questo è il codice in MainActivity:

Codice (Java): [Seleziona]
TextView tv;
  final String URL = "http://192.168.1.3";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
       
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        tv = (TextView) findViewById(R.id.textView2);
....
........
 new MyTask().execute(URL);

    }
     
   
    //INIZIO
    private class MyTask extends AsyncTask<String, Void, String> {
        ProgressDialog prog;
        String gradi = "";
        @Override
        protected void onPreExecute() {
            prog = new ProgressDialog(MainActivity.this);
            prog.setMessage("Connessione ad Arduino in corso...");
            prog.show();
        }
 
        @Override
        protected String doInBackground(String... params) {
            try {
                org.jsoup.nodes.Document doc = Jsoup.connect("http://192.168.1.3").get();
                Element div = doc.getElementById("gradi");
                 gradi = div.attr("gradi");
                } catch (IOException e) {
                e.printStackTrace();
            }
            return gradi;
        }
 
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            prog.dismiss();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            tv.setText(result);
        }
    }
Premetto che la mia app, ha delle tab, così:
https://fbcdn-sphotos-b-a.akamaihd.net/hphotos-ak-ash4/t1.0-9/1977025_622431877828341_1202740712_n.jpg
vorrei settare la temperatura dove c'è messo N/D°
nel manifest ho messo solo il permesso per internet.
Il valore se lo stampo con un toast riesco a vederlo benissimo, non riesco solo a settarlo sulla textview
logcat:
Codice: [Seleziona]
04-05 05:17:17.599: E/AndroidRuntime(1116): FATAL EXCEPTION: main
04-05 05:17:17.599: E/AndroidRuntime(1116): Process: com.gianni.homecontrol, PID: 1116
04-05 05:17:17.599: E/AndroidRuntime(1116): java.lang.NullPointerException
04-05 05:17:17.599: E/AndroidRuntime(1116):         at com.gianni.homecontrol.MainActivity$MyTask.onPostExecute(MainActivity.java:120)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at com.gianni.homecontrol.MainActivity$MyTask.onPostExecute(MainActivity.java:1)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.os.AsyncTask.finish(AsyncTask.java:632)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.os.AsyncTask.access$600(AsyncTask.java:177)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.os.Handler.dispatchMessage(Handler.java:102)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.os.Looper.loop(Looper.java:137)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at android.app.ActivityThread.main(ActivityThread.java:4998)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at java.lang.reflect.Method.invokeNative(Native Method)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at java.lang.reflect.Method.invoke(Method.java:515)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
04-05 05:17:17.599: E/AndroidRuntime(1116):         at dalvik.system.NativeStart.main(Native Method)

temperature.xml:
Codice (XML): [Seleziona]
<TextView
       android:id="@+id/textView2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_below="@+id/textView1"
       android:layout_centerHorizontal="true"
       android:text="@string/gradi"
       android:textAppearance="?android:attr/textAppearanceLarge" />
Questa è la textview.
Grazie a chi mi potrà aiutare!

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Problema textView e setText()
« Risposta #1 il: 05 Aprile 2014, 12:12:03 CEST »
0
Dal LogCat si capisce che c'è qualcosa di NULL alla riga 120 della MainActivity.java, non so quale riga è ma dovrebbe essere la tv.setText a quanto dici.

Prova a mettere queste righe di verifica e riproduci il crash:

Codice (Java): [Seleziona]
@Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            prog.dismiss();
                Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
            if (tv==null) Log.e("myapp","ERROR : tv is null");
            if (result==null) Log.e("myapp","ERROR : result is null");
            tv.setText(result);
        }
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline roxdragon

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Ubuntu 10.04
Re:Problema textView e setText()
« Risposta #2 il: 05 Aprile 2014, 12:16:10 CEST »
0
Grazie per avermi risposto... ecco il logcat:
Codice: [Seleziona]
04-05 06:15:38.239: E/myapp(1216): ERROR : tv is null
04-05 06:15:38.249: E/AndroidRuntime(1216): FATAL EXCEPTION: main
04-05 06:15:38.249: E/AndroidRuntime(1216): Process: com.gianni.homecontrol, PID: 1216
04-05 06:15:38.249: E/AndroidRuntime(1216): java.lang.NullPointerException
04-05 06:15:38.249: E/AndroidRuntime(1216):         at com.gianni.homecontrol.MainActivity$MyTask.onPostExecute(MainActivity.java:120)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at com.gianni.homecontrol.MainActivity$MyTask.onPostExecute(MainActivity.java:1)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.os.AsyncTask.finish(AsyncTask.java:632)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.os.AsyncTask.access$600(AsyncTask.java:177)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.os.Handler.dispatchMessage(Handler.java:102)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.os.Looper.loop(Looper.java:137)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at android.app.ActivityThread.main(ActivityThread.java:4998)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at java.lang.reflect.Method.invokeNative(Native Method)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at java.lang.reflect.Method.invoke(Method.java:515)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593)
04-05 06:15:38.249: E/AndroidRuntime(1216):         at dalvik.system.NativeStart.main(Native Method)

premetto che la textview che devo settare si trova nella Tab temperature, e io sto scrivendo su mainactivity e non su temperature.java, credo non faccia differenza, perchè asynctask è su mainactivity
« Ultima modifica: 05 Aprile 2014, 13:12:35 CEST da roxdragon »

Offline GabMarioPower

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 606
  • Respect: +152
    • Github
    • Google+
    • gabrielemariotti
    • GabMarioPower
    • Mostra profilo
  • Play Store ID:
    GAB+MARIO+DEV
  • Sistema operativo:
    Ubuntu 14.04 , Win 10
Re:Problema textView e setText()
« Risposta #3 il: 05 Aprile 2014, 14:09:29 CEST »
0
Ma... (domanda banale)

Codice (Java): [Seleziona]
 tv = (TextView) findViewById(R.id.textView2);
hai controllato che sia not null?

Offline roxdragon

  • Nuovo arrivato
  • *
  • Post: 22
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S3
  • Sistema operativo:
    Ubuntu 10.04
Re:Problema textView e setText()
« Risposta #4 il: 05 Aprile 2014, 20:07:31 CEST »
0
Ciao ho risolto, il problema stava che c'erano due textview con un id lo stesso...!!!
« Ultima modifica: 06 Aprile 2014, 04:39:11 CEST da roxdragon »

Offline Noisemaker

  • Utente junior
  • **
  • Post: 58
  • Respect: +1
    • Mostra profilo
Re:Problema textView e setText()
« Risposta #5 il: 06 Aprile 2014, 16:40:02 CEST »
0
Strano che non te l'abbia segnalato lo stesso ID  o_O
Comunque quando succede così a volte è molto utile entrare in debug e guardare riga per riga se l'app fa quello che dovrebbe (menoso, però a volte essenziale :D )