Ciao a tutti cari amici di iProg nel tutorial precedente abbiamo visto cosa sono gli intent e come usarli all’interno di un’ applicazione, oggi invece vi mostrerò come passare dei dati da un Activity A ad un Activity B. Passiamo subito con un esempio pratico e creiamo un nuovo progetto, una volta fatto ciò creiamo una nuova Activity. A questo punto all’interno file layout dell’ Activity principale inseriamo un EditText e un Button.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MyActivity"> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/editText" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Premimi " android:id="@+id/button" android:layout_below="@+id/editText" /> </RelativeLayout>
Ora scriviamo il codice all’ interno del file java dell’ Activity principale
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my); Button button = (Button)findViewById(R.id.button); final EditText editText =(EditText)findViewById(R.id.editText); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent =new Intent(getApplicationContext(),ActivityDue.class); intent.putExtra("nome",editText.getText().toString()); startActivity(intent); } }); } //Codice di Default
L’unica cosa nuova che si può notare all’interno del codice di rispetto al tutorial precedente è:
intent.putExtra("nome",editText.getText().toString()); Possiamo considerare ciò come un dizionario dove nome è la chiave e editText.getText().toString() il valore che ricaviamo dalla EditText. Ora rechiamoci all'interno del file layout della seconda Activity e impostiamola nel seguente modo:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context="com.example.diegocaridei.passaggioinfo.ActivityDue"> <TextView android:text="@string/hello_world" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/textView" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:textSize="22dp" android:gravity="center_horizontal" /> </RelativeLayout>
Mentre per quanto concerne il codice java della seconda Activity è il seguente
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_activity_due); TextView textView=(TextView)findViewById(R.id.textView); textView.setText("Ciao "+getIntent().getExtras().getString("nome")); } //Codice di default
Grazie a questa riga di codice getIntent().getExtras().getString(“nome”) possiamo recuperare i dati passati dalla prima Activity.