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.
[code lang=”bash”]
<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>
[/code]
Ora scriviamo il codice all’ interno del file java dell’ Activity principale
[code lang=”java”]
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
[/code]
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:
[code lang=”bash”]<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>[/code]
Mentre per quanto concerne il codice java della seconda Activity è il seguente
[code lang=”java”] @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[/code]
Grazie a questa riga di codice getIntent().getExtras().getString(“nome”) possiamo recuperare i dati passati dalla prima Activity.