Intent-a App bat osatzen duten osagai ezberdinen arteko komunikazio elementua edo objektua da. Kasu honetan helburua beste pantaila bat irekitzea denez Intent baten bitartez beste activity bati deituko zaio: lehenengoan testu bat, izen bat, idatziko da EditText kontrolean eta Ireki Button-ari klikatzerakoan 2. activity-aren interfazea zabalduko da EditText-ean sartutako testua erakutsiz. I. Ilustrazioan ikus daiteke lortu nahi dena.
I. Ilustrazioa: 2 pantailako App-a |
App-ak 2 pantaila izango dituenez 2 interfaze grafiko eta 2 activity definitu beharko dira. Lehenengo pantaila honako xml artxiboak defini lezake:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/izenarenEtiketa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/izenarenEtiketa" /> <EditText android:id="@+id/izenaSartzeko" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="text"> </EditText> <Button android:id="@+id/irekiBotoia" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ireki" /> </LinearLayout>
Bigarren interfaze bat eraikitzeko, II.Ilustrazioa ikusten moduan artxibo berri bat sortzeko aukerara joko dugu res>layout karpetaren gainean saguaren eskubiko botoiari emanez.
II. Ilustrazioa: Fitxategi berri bat sortzen res>layout barnean |
III. Ilustrazioa: fitxategiari izena ematen |
Bigarren pantailak TextView bat izango du soilik:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/kaixo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> </LinearLayout>
Logikari dagokionez, lehenengo pantailari dagokion activity-aren class-ea modu honetan definituko da:
package com.proeiktua.lehenengoproiektua; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText izenaSartzeko = (EditText)findViewById(R.id.izenaSartzeko); final Button irekiBotoia = (Button)findViewById(R.id.irekiBotoia); irekiBotoia.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, pantaila2.class); Bundle b = new Bundle(); b.putString("IZENA", izenaSartzeko.getText().toString()); intent.putExtras(b); startActivity(intent); } }); } }
onClick metodoaren barnean Intent objektu bat definitzen da, egin nahi den jauzia definituz, hau da, MainActivity.java-tik pantaila2.java fitxategira egingo den jauzia (orain ez da pantaila2.java definitu!). Jauzi horretan EditText-ean sartutako testua, izena, eraman behar denez Bundle objektu bat definitzen da, eta ondoren EditText-ean dagoen testua atxikitzen zaio. intent.putExtras(b)-ekin Bundle-a Intent-ari ezartzen zaio (IZENA etiketa jartzen zaio identifikatibo moduan) eta azkenik startActivity-rekin 2. pantailari, edo hobe esan, 2. activity-ri deitzen zaio.
2. pantaila definitzeko java fitxategi berri bat definitu beharko da src karpetako namespace-aren barnean lehndik egin denaren antzera (Ikus IV. eta V. Ilustrazioak).
IV. Ilustrazioa: java fitxategi bat sortzen |
V. Ilustrazioa: 2. pantaila bistaratuko duen activity-aren class-eari izena ematen |
package com.proeiktua.lehenengoproiektua; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class pantaila2 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pantaila2); TextView txtSaludo = (TextView)findViewById(R.id.kaixo); Bundle bundle = this.getIntent().getExtras(); txtSaludo.setText("Kaixo " + bundle.getString("IZENA")); } }
setContentView-arekin 2. pantaila bistaratu ondoren, eta TextView-a instanziatu eta gero, Bundle objektu batean activity-a hasieratu duen Intent-ak zekarren Bundle-eko "Extra" elementuak berreskuratzen ditugu (kasu honetan IZENA etiketarekin identifikatuko direnak). Azkenik setText-ekin TextView-ra pasako da erakutsi nahi dugun testua.