Autore Topic: Aggiornamento TextView runtime  (Letto 317 volte)

Offline sheldon99

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus zen2
  • Sistema operativo:
    Windows 7
Aggiornamento TextView runtime
« il: 11 Aprile 2017, 11:12:46 CEST »
0
Salve a tutti,

la mia app è costituita da un'unica pagina in cui ho una textview (per ora hardcoded con una stringa di default) ed un bottone.
Premuto il bottone avvio dei sensori che smettono di ricevere solo quando premo nuovamente il bottone. Questi dati li comparo poi con delle soglie impostate di default.
Quello che vorrei fare è, che a runtime (mentre la ricezione dei dati è attiva) a seconda dell'esito di tale confronto, modificare il testo della textview.

I confronti tra i dati attualmente li faccio nel onHandleIntent del Service e pensavo fosse possibile già da li richiamare la view per modificare il testo, ma non sembra possibile. Ho pensato allora di usare gli Intent, ma non sono molto pratico.. Qualcuno saprebbe aiutarmi?

Grazie
« Ultima modifica: 11 Aprile 2017, 11:35:13 CEST da sheldon99 »

Offline capitancooker

  • Utente junior
  • **
  • Post: 119
  • Marco
  • Respect: +10
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    macOS High Sierra
Re:Aggiornamento TextView runtime
« Risposta #1 il: 11 Aprile 2017, 11:33:00 CEST »
0
Io inserirei un BroadcastReceiver nell'activity che intercetta i dati inviati tramite sendBroadcast dal servizio.
Attendo i più esperti per scoprire se esiste una modalità più corretta.
Ciao,
Marco

Se sbaglio, correggetemi.

Offline sheldon99

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus zen2
  • Sistema operativo:
    Windows 7
Re:Aggiornamento TextView runtime
« Risposta #2 il: 11 Aprile 2017, 12:21:46 CEST »
0
La textView l'ho implementata inizialmente con una stringa di default così:
Codice (XML): [Seleziona]
<TextView
       android:text="Prova"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentTop="true"
       android:layout_alignParentRight="true"
       android:layout_alignParentEnd="true"
       android:layout_marginRight="14dp"
       android:layout_marginEnd="14dp"
       android:id="@+id/textView2"
       android:layout_above="@+id/scrollView"
       android:layout_toRightOf="@+id/toggleButton"
       android:layout_toEndOf="@+id/toggleButton" />


Attualmente ho implementato questo nel onHandleIntent del mio IntentService:

Codice (Java): [Seleziona]
fermo = compareValues(varAccX, varAccY, varAccZ, varGirX, varGirY, varGirZ);
                Intent intentText = new Intent();
                intentText.setAction(Constants.TEXT_ACTION);
                if(fermo)
                    intentText.putExtra("Sto Fermo","Info");
                else
                    intentText.putExtra("Sto Camminando", "Info");
                LocalBroadcastManager lbm = LocalBroadcastManager.getInstance(this);
                lbm.sendBroadcast(intentText);

Mentre questo è il receiver
Codice (Java): [Seleziona]
private class TextReceiver extends  BroadcastReceiver {
        TextView tv = (TextView) findViewById(R.id.textView2);

        @Override
        public void onReceive(Context context, Intent intent){
            tv.setText(intent.getExtras().getString("Info"));
        }
    }

Nel main dove registro il receiver?? Voglio solo cambiare quella scritta che inizialmente è "Prova" con "Sto fermo" o "Sto camminando" a seconda del confronto che faccio con i dati dei listener nel onHandleIntent del mio IntentService
« Ultima modifica: 11 Aprile 2017, 12:32:55 CEST da sheldon99 »

Offline capitancooker

  • Utente junior
  • **
  • Post: 119
  • Marco
  • Respect: +10
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    macOS High Sierra
Re:Aggiornamento TextView runtime
« Risposta #3 il: 11 Aprile 2017, 12:39:52 CEST »
0
Il receiver lo puoi registrare in onCreate() mentre lo devi rimuovere con un unregisterReceiver nel onDestroy()
Per il contenuto del messaggio modifica così:

Codice (Java): [Seleziona]
            tv.setText(intent.getExtras().getString("stato"));
e così nel servizio:
Codice (Java): [Seleziona]
           if(fermo)
                 intentText.putExtra("stato","Sto Fermo";
           else
                 intentText.putExtra("stato","Sto Camminando");

Prova e vedi se può funzionare.
Ciao,
Marco
Se sbaglio, correggetemi.

Offline sheldon99

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus zen2
  • Sistema operativo:
    Windows 7
Re:Aggiornamento TextView runtime
« Risposta #4 il: 11 Aprile 2017, 13:07:40 CEST »
0
Il receiver lo puoi registrare in onCreate() mentre lo devi rimuovere con un unregisterReceiver nel onDestroy()
Per il contenuto del messaggio modifica così:

Codice (Java): [Seleziona]
            tv.setText(intent.getExtras().getString("stato"));
e così nel servizio:
Codice (Java): [Seleziona]
           if(fermo)
                 intentText.putExtra("stato","Sto Fermo";
           else
                 intentText.putExtra("stato","Sto Camminando");

Prova e vedi se può funzionare.
Ciao,
Marco

Ho risolto ti ringrazio!