Autore Topic: Refresh activity e tasto Back del dispositivo  (Letto 1437 volte)

Offline UchihaDD

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows
Refresh activity e tasto Back del dispositivo
« il: 09 Aprile 2011, 20:16:50 CEST »
0
Buona sera a tutti, sto cercando come sapete di muovere i primi passi nella programmazione per Android e devo dire che mi sto divertendo sempre di più.

Volevo chiedere una cosa rispetto all'uso del tasto Back nei dispositivi (non avendo un telefono android non so come funziona). In particolare deve per forza essere che quando premo il tasto back dopo che da una prima activity ne è stata aperta un'altra, devo per forza tornare all'activity di prima con lo stato precedente, oppure posso aggiornarla??

Quello che ho provato io è stato guardando il flusso di stati che assume un activity impostare i metodi onPause e onRestart e richiamare un metodo che imposta una listView.

Non sono riuscito ad aggiornare la listView creata.

Le mie domande finali sono due:
- è sensato far applicare un aggiornamento ad un activity precedente oppure dovrei terminarla con finish() e poi aprirne un altra??
- in caso sia sensato effettuare l'aggiornamento, secondo voi devo usare i metodi on Pause e onRestart oppure ho sbagliato a capire il diagramma di stato delle activity?

Vi posto qui sotto il mio codice:
Codice (Java): [Seleziona]
public void onPause(){
        super.onPause();
        visualConn();
        setContentView(lista3);
    }

public void onRestart(){
        super.onRestart();
        visualConn();
        setContentView(lista3);
    }

public void visualConn(){
       

                t1.setText("Sono state trovate delle connessioni\n clicca dove vuoi connetterti");
                //b1.setText("Connessione");

        // avvio la seconda activity
       
        int colIp = conn.getColumnIndex(ConnDatabase.IP);  
            int colNome = conn.getColumnIndex(ConnDatabase.NAME);
                try{
                lista3 =(ListView)findViewById(R.id.tlista1);
                }
                catch(NullPointerException e){
                        t1.append("\nproblema lista");
                }
                final ArrayList<HashMap<String, String>> listaConn  = new ArrayList<HashMap<String, String>>();
                if(conn.moveToFirst()){  
                for ( int j=0;j<conn.getCount();j++){
                        HashMap<String, String> map = new HashMap<String, String>();
                        map.put("nome", conn.getString(colNome));
                        map.put("ip", conn.getString(colIp));
                       
                        listaConn.add(map);
                        conn.moveToNext();
                }
         
            }//fine inserimento in lista gli elementi
                Context ct = null;
                String[] from = null;
                try{
                         from = new String[] {"nome","ip"};
                }
                catch(NullPointerException e){
                        t1.setText("\nproblema from");
                }
                int[] to = null;
                try{
                        to = new int[] {R.id.item1, R.id.item2};
                }
                catch(NullPointerException e){
                        t1.setText("\nproblema from");
                       
                }
                try{
                        ct = this.getApplicationContext();
                }
                catch(NullPointerException e){
                        t1.append("\nproblema context");
                }
                SimpleAdapter adapter = null;
                //inizio simple
                try{
                 adapter = new SimpleAdapter(ct, listaConn, R.layout.lista, from , to);
    }   catch(NullPointerException e){
                        t1.append("\nproblema adattatore");
                }
                try{
                        lista3.setAdapter(adapter);
                }
                catch(NullPointerException e){
                        t1.append("\nproblema adattatore");
                }
                lista3.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                       
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Toast.makeText(
                                view.getContext(),
                                "Connessione a "+listaConn.get(position).get("nome").toString(),
                                Toast.LENGTH_LONG
                                ).show();
               
                Log.i("----IP:---->",listaConn.get(position).get("ip").toString());
                d.open();
                connettiti = new Connessione();
                progressDialog.setProgress(0);
                progressDialog.setMessage("Caricamento...");
                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDialog.setTitle("Connessione arduino");
                progressDialog.show();
                       
                IP_CONNESSIONE = listaConn.get(position).get("ip").toString();
                connettiti.execute(lettura(IP_CONNESSIONE));

            }
                });
       
    }

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:Refresh activity e tasto Back del dispositivo
« Risposta #1 il: 11 Aprile 2011, 16:14:14 CEST »
0
Se hai necessità di aggiornare una activity dopo che si è tornati su questa (tramite tasto back o altro) falla partire con startActivityForResult e gestisci in refresh in onActivityResult.

Cambiare il flusso "normale" di una activity tramite modifica del tasto back a me personalmente non piace.

Offline UchihaDD

  • Nuovo arrivato
  • *
  • Post: 16
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Windows
Re:Refresh activity e tasto Back del dispositivo
« Risposta #2 il: 11 Aprile 2011, 21:25:39 CEST »
0
Grazie mille per avermi risposto...
per ora avevo inserito nella funzione onRestart() una nuova chiamata alla query di selezione degli elementi da far vedere nella lista, però probabilmente la tua soluzione è più efficiente.