Autore Topic: Ritornare all'activity principale con onResume  (Letto 1034 volte)

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Ritornare all'activity principale con onResume
« il: 06 Dicembre 2014, 16:46:18 CET »
0
Salve a tutti, nell'activity principale ricevo dei dati dal bluetooth, salvo il valore più alto e lancio una seconda activity che fa partire un giochino. Quando il gioco finisce, torno all'activity principale con il tasto back ma non acquisisce più il valore massimo. Come dovrei fare?
Questa è l'activity principale:
Codice (Java): [Seleziona]
public class MainActivity extends Activity implements View.OnClickListener {

        Button bConnect;
        byte prova = (byte) 187; //188 e 168  
        int max=0;
        TextView massimo;
        Button reset;
        int conta=0;
       
        Handler mHandler = new Handler(){
                @Override
                public void handleMessage(Message msg) {
                        // TODO Auto-generated method stub

                        super.handleMessage(msg);

                        switch(msg.what){
                        case Bluetooth.SUCCESS_CONNECT:
                                Bluetooth.connectedThread = new Bluetooth.ConnectedThread((BluetoothSocket)msg.obj);
                                Toast.makeText(getApplicationContext(), "Connected!", 0).show();
                                String s = "successfully connected";
                                Bluetooth.connectedThread.start();
                                Bluetooth.connectedThread.write(new byte[]{(byte) prova});

                                break;

                        case Bluetooth.MESSAGE_READ:

                                if(msg.obj != null)
                                {
                                        byte[] readBuf = (byte[]) msg.obj;
                                        int valore_a_16 = ((readBuf[1] & 0xFF) << 8) | (readBuf[0] & 0xFF);
                                        int valore_a_16_2 = ((readBuf[3] & 0xFF) << 8) | (readBuf[2] & 0xFF);
                                        int valore_a_16_3 = ((readBuf[5] & 0xFF) << 8) | (readBuf[4] & 0xFF);
                                        int valore_a_16_4 = ((readBuf[7] & 0xFF) << 8) | (readBuf[6] & 0xFF);
                                        String strIncom = new String(readBuf);   // create string from bytes array
                                        String str = String.valueOf(valore_a_16);
                                        String str2 = String.valueOf(valore_a_16_2);
                                        String str3 = String.valueOf(valore_a_16_3);
                                        String str4 = String.valueOf(valore_a_16_4);
                        //              Log.d("SHORT", str);
                        //              Log.d("SHORT CH 2", str2);
                        //              Log.d("SHORT CH 3", str3);
                        //              Log.d("SHORT CH 4", str4);
                                        char c = strIncom.charAt(0);
                                        long foo = Integer.parseInt(str);
                                        long foo2 = Integer.parseInt(str2);
                                        long foo3 = Integer.parseInt(str3);
                                        long foo4 = Integer.parseInt(str4);
                                        //String provola = Integer.toString(foo);
                                        //Log.d("AAAAAAAAAAAAAA", provola);
                                        //   int decVal = (int) c;

                                        long risultato = (long) (foo * 5000000)/(65535*150);
                                        long risultato2 = (long) (foo2 * 5000000)/(65535*150);
                                        long risultato3 = (long) (foo3 * 5000000)/(65535*150);
                                        long risultato4 = (long) (foo4 * 5000000)/(65535*150);

                                        String prova = Float.toString(risultato);
                                        String prova2 = Float.toString(risultato2);
                                        String prova3 = Float.toString(risultato3);
                                        String prova4 = Float.toString(risultato4);
                                       
                                        if(risultato>max)
                                        {
                                                max=(int) risultato;
                                                String maxi = Integer.toString(max);
                                                massimo.setText("MAX :"+ maxi);
                                        }
                                       
                                }

                        }
                }
        };

        @Override


        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                bConnect = (Button)findViewById(R.id.button1);
                bConnect.setOnClickListener(this);
                Bluetooth.gethandler(mHandler);
                massimo = (TextView)findViewById(R.id.textView1);
                reset = (Button)findViewById(R.id.ButtonReset);
                reset.setOnClickListener(this);

        }



        public void play(View v)
        {

                Intent i=new Intent(this,Game.class);
                i.putExtra("max", max);
                startActivity(i);
        }

        public void highscore(View v)
        {
                Intent i=new Intent(this,Highscore.class);
                startActivity(i);
        }

        public void setting(View v)
        {
                Intent i=new Intent(this,Setting.class);
                startActivity(i);
        }




        public void exit(View v)
        {
                System.exit(0);
        }

        public void onClick(View v) {
                // TODO Auto-generated method stub
                switch(v.getId()){
                case R.id.button1:

                        startActivity(new Intent("android.intent.action.BLUGAME"));
                        break;
                case R.id.ButtonReset:
                        max=0;
                }
        }
       
        public void onResume(Bundle savedInstanceState) {
                super.onResume();
                setContentView(R.layout.activity_main);
                Bluetooth.gethandler(mHandler);
        }





}

Grazie! :)

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Ritornare all'activity principale con onResume
« Risposta #1 il: 06 Dicembre 2014, 18:13:56 CET »
0
Forse ti conviene un service che comunica con la tua activity.

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #2 il: 06 Dicembre 2014, 18:33:27 CET »
0
È l'unica soluzione?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Ritornare all'activity principale con onResume
« Risposta #3 il: 06 Dicembre 2014, 18:37:27 CET »
0
Sinceramente non ben capito cosa devi fare

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #4 il: 06 Dicembre 2014, 18:39:56 CET »
0
Devo tornare all'activity principale lanciando l'handler

Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Ritornare all'activity principale con onResume
« Risposta #5 il: 06 Dicembre 2014, 18:51:12 CET »
0
Il tuo handler per recuperare dei dati, funziona solo quando tu hai quell' activity davanti agli occhi.

Più semplicemente, se c'è un processo che dura 10 secondi nel fare il suo lavoro, e tu apri un altra app o comunque nascondi la tua app, viene richiamato il metodo onPause().
Se non fai l' Override di quel metodo il processo viene bloccato.

Comunque se tu hai il tuo gioco in B, e devi tornare ad A potresti passare un parametro con intent.putextra().
Se invece non devi ritornare niente, ma devi conservare lo stato della tua Activity A allora devi riguardarti il ciclo di vita delle Activity

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #6 il: 06 Dicembre 2014, 18:54:27 CET »
0
Quando in B premo il tasto back vorrei che A parta con l'handler

Offline Alexofalco

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Advance
  • Sistema operativo:
    2.3.6
Re:Ritornare all'activity principale con onResume
« Risposta #7 il: 07 Dicembre 2014, 10:46:06 CET »
0
Tonno ti voleva far capire che non è il metodo più corretto per procedere. Ma giustamente non siamo dentro di te e quindi non sappiamo esattamente la tua necessitá.

In ogni caso per risolvere il tuo problema dovresti studiarti un pò meglio il ciclo di vita nell'activity. È sempre sconsigliato associare i listener nel create. Quindi o sposti il setListener in onStart oppure (come hai fatto tu anche se non mi piace al 100%) usi anche il onRestart. Non ti funziona perchè manca l'override, scritta così è come se fosse una funzione normale

Inviato dal mio GT-I9070 con Tapatalk 2


Offline tonno16

  • Utente storico
  • *****
  • Post: 1228
  • Respect: +59
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Ritornare all'activity principale con onResume
« Risposta #8 il: 07 Dicembre 2014, 11:22:57 CET »
0
Off-Topic:
Non ti funziona perchè manca l'override, scritta così è come se fosse una funzione normale

No no :) se io sopra un metodo non metto @Override, il tutto funziona esattamente come prima, cioè funziona bene.

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #9 il: 07 Dicembre 2014, 15:50:26 CET »
0
Quindi qual è il problema?

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #10 il: 10 Dicembre 2014, 16:51:59 CET »
0
Ho provato sia con che senza @Override ma non funziona lo stesso..

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #11 il: 18 Dicembre 2014, 09:35:34 CET »
0
Nessuno può aiutarmi?

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #12 il: 13 Gennaio 2015, 12:48:02 CET »
0
Up..

Offline giovannifa

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy grand neo
  • Sistema operativo:
    android 4.2
Re:Ritornare all'activity principale con onResume
« Risposta #13 il: 15 Gennaio 2015, 14:00:19 CET »
0
ma quando devi rilanciare l'handler devi rileggere il valore da Bluetooth ?

se ho ben capito alla pressione del back, si ritorna ad activity principale che deve nuovamente leggere nuovi valori da Bluetooth.

giusto ?

Offline davix10

  • Utente normale
  • ***
  • Post: 159
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg G4
  • Play Store ID:
    davix10
  • Sistema operativo:
    Windows 10
Re:Ritornare all'activity principale con onResume
« Risposta #14 il: 15 Gennaio 2015, 14:26:53 CET »
0
ma quando devi rilanciare l'handler devi rileggere il valore da Bluetooth ?

se ho ben capito alla pressione del back, si ritorna ad activity principale che deve nuovamente leggere nuovi valori da Bluetooth.

giusto ?
Esattamente. nel mio caso, invece, rimane in memoria il valore massimo registrato