Autore Topic: Ciclo di vita di un activity  (Letto 507 volte)

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Ciclo di vita di un activity
« il: 21 Maggio 2014, 16:07:17 CEST »
0
Ciao a tutti,
vorrei chiedervi un informazione riguardo il ciclo di una activity. Ho creato il seguente esempio :

Codice (Java): [Seleziona]
package com.example.navigation.app;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity {
    Button button;
    static final String data = "DATA_PASS";
    TextView textView;
    static final String tag = "Events";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_main);
        Log.d(tag, "in the onCreate event");
        button = (Button)findViewById(R.id.buttonNext);
        textView = (TextView)findViewById(R.id.textView2);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //textView.setText(getResources().getString(R.string.change_click));
                Intent intent;
                intent = new Intent(MainActivity.this,SecondActivity.class);
                intent.putExtra("NomeDati1", "Valore da passare");
                startActivity(intent);
            }

        });
    }
    public void onStart(){
        super.onStart();
        Log.d(tag, "int the OnStart event");
    }
    public void onRestart(){
        super.onRestart();
        Log.d(tag, "int the OnRestart event");
    }
    public void onResume(){
        super.onResume();
        Log.d(tag, "int the OnResume event");
        String datoRientrato=getIntent().getStringExtra("NomeDati1");
        if(datoRientrato!=null){//VERIFICA
            textView.setText(datoRientrato);
        }
    }
    public void onPause(){
        super.onPause();
        Log.d(tag, "int the OnPause event");
    }
    public void onStop(){
        super.onStop();
        Log.d(tag, "int the OnStop event");
    }
    public void onDestroy(){
        super.onDestroy();
        Log.d(tag, "int the OnDestroy event");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

Codice (Java): [Seleziona]
package com.example.navigation.app;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class SecondActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Toast.makeText(this,"Whoaahhh",2).show();
        TextView text1 = (TextView)findViewById(R.id.textView1);
        Button button = (Button)findViewById(R.id.button_ret);
        String datoarrivato = getIntent().getStringExtra("NomeDati1");
        text1.setText(datoarrivato);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(SecondActivity.this,MainActivity.class);
                intent.putExtra("NomeDati1", "Valore che ritorna");
                startActivity(intent);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
       
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.second, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

}

come output , passando da una activity all altra ho questo :

Codice (Java): [Seleziona]
[code=java]05-21 15:57:52.239  15013-15013/com.example.navigation.app D/Events﹕ in the onCreate event
05-21 15:57:52.239  15013-15013/com.example.navigation.app D/Events﹕ int the OnStart event
05-21 15:57:52.243  15013-15013/com.example.navigation.app D/Events﹕ int the OnResume event
05-21 15:58:25.414  15013-15013/com.example.navigation.app D/Events﹕ int the OnPause event
05-21 15:58:25.797  15013-15013/com.example.navigation.app D/Events﹕ int the OnStop event
05-21 15:58:29.325  15013-15013/com.example.navigation.app D/Events﹕ in the onCreate event
05-21 15:58:29.325  15013-15013/com.example.navigation.app D/Events﹕ int the OnStart event
05-21 15:58:29.325  15013-15013/com.example.navigation.app D/Events﹕ int the OnResume event
[/code]

Ma se va in stop, non dovrebbere riprendere direttamente dallo start e non dal create???

grazie

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Ciclo di vita di un activity
« Risposta #1 il: 21 Maggio 2014, 16:15:40 CEST »
0
Dipende da come lo configuri. Nel tuo caso fai partire una nuova instanza della tua MainActivity
I numeri contano molto di più del seme.

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Ciclo di vita di un activity
« Risposta #2 il: 21 Maggio 2014, 16:49:03 CEST »
0
ah ok, ma e se volessi solo far ripartire l'istanza creata in precedenza e non una nuova ? come posso fare ?

grazie 1000
« Ultima modifica: 21 Maggio 2014, 16:52:52 CEST da andrea07 »

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Ciclo di vita di un activity
« Risposta #3 il: 22 Maggio 2014, 07:45:18 CEST »
0
Così:

Codice (Java): [Seleziona]
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
I numeri contano molto di più del seme.

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Ciclo di vita di un activity
« Risposta #4 il: 22 Maggio 2014, 09:07:52 CEST »
0
ok grazie, ma è uguale se uso solo il finish() sul evento click della seconda activity?

Se volessi passare dei valori e fare in modo che la seconda activity ne restituisca un altro, qual'è la strada più efficace?
Ho trovato i due metodi startActivityForResult(Intent  intent, int requestCode); e onActivityResult(int requestCode, int resultCode, Intent data);, possono andar bene?

grazie

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Ciclo di vita di un activity
« Risposta #5 il: 22 Maggio 2014, 09:46:06 CEST »
0
Il finish() non è mai consigliabile.

Dipende cosa devi fare, dalla seconda devi passare dei dati alla prima?
I numeri contano molto di più del seme.

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Ciclo di vita di un activity
« Risposta #6 il: 22 Maggio 2014, 09:55:27 CEST »
0
Praticamente devo passare dei dati dalla prima alla seconda, elaborarli, e restituire i dati modificati..

Offline eagledeveloper

  • Translate Team
  • Utente senior
  • ****
  • Post: 516
  • Respect: +37
    • Google+
    • 347516210
    • dark_pinz
    • @WandDStudios
    • Mostra profilo
    • W&D Studios
  • Dispositivo Android:
    HTC One X e HTC One
  • Play Store ID:
    W%26D+Studios
  • Sistema operativo:
    Ubuntu / Windows 7
Re:Ciclo di vita di un activity
« Risposta #7 il: 22 Maggio 2014, 09:57:35 CEST »
0
Allora sì puoi usare:

Codice (Java): [Seleziona]
startActivityForResult(Intent  intent, int requestCode);
onActivityResult(int requestCode, int resultCode, Intent data);
I numeri contano molto di più del seme.

Offline andrea07

  • Nuovo arrivato
  • *
  • Post: 11
  • Respect: 0
    • Mostra profilo
Re:Ciclo di vita di un activity
« Risposta #8 il: 22 Maggio 2014, 10:00:43 CEST »
0
grazie mille  :-)

Ma nella seconda activity, per ritornare alla prima col valore, faccio cosi ?

Codice (Java): [Seleziona]
Intent returnIntent = new Intent();
setResult(RESULT_CANCELED, returnIntent);
finish();

Il finish quindi lo uso ?
« Ultima modifica: 22 Maggio 2014, 10:05:30 CEST da andrea07 »