La adresa https://svn.info.uaic.ro/repos/ciatri/android-ciatri6/ aveti un exemplu de aplicatie android cu 2 activitati.
Pentru a adauga o noua activitate, se urmeaza urmatorii pasi:

  1. se merge in directorul res -> layout
  2. click dreapta -> new -> other -> android -> android xml file
  3. se alege layout, se da un nume si eventual se seteaza si alte proprietati

Pe acest layout putem aseza iarasi controale vizuale. Din pacate pluginul de Eclipse genereaza id-ul componentelor in aceeasi ordine ( daca avem in main.xml un button1, in noul xml daca vom aduaga un buton va fi generat tot button1). Pentru a trece de aceasta problema, in fereastra Outline, click drepta pe element si Edit ID. Vom pune id-uri care sa contina si numele formularului pe care se gaseste.

La nivel de cod, trebuie sa definim o noua activitate. In metoda onCreate a ei trebuie sa setam contentview-ul pe ID-ul noului formular creat.

Aplicatia de test are doua formulare care comunica intre ele prin 2 butoane, inainte inapoi.

Atentie la posibilele probleme de persistenta a datelor care pot aparea. Orice a fost modificat la nivelul interfetei vizuale va fi pierdut ! ( deoarece noi cream o noua activitate ). Solutii:

  • documentarea cu privirea la un mecanism de persistenta pentru activitati ( am reusit sa gasesc doar evenimente gen aplicatia e inchisa si apoi deschisa din nou)
  • persistarea informatiilor intr-un fisier/ baza de date / samd. si recuperarea lor la load-ul activitatii respective.

Transmiterea de informatii intre activitati


Vom avea nevoie sa transmitem informatii intre 2 ecrane ale aplicatiei ( activiati ) : conexiunea, referinta la modulul de comunicare, samd ( IDEE: sa impachetam tot ce avem nevoie intr-un singur obiect pe care sa-l pasam ).
Pornirea unei activitati se mai poate face in felul urmator:

 String x = "mihai";
 Bundle bundle = new Bundle();
 bundle.putString("x",x);
 Intent intent = new Intent(act1.this, act2.class);
 intent.putExtras(bundle);
 startActivity(intent);

Practic, transmitem referinta la obiectul x catre activitatea act2.

Recuperarea informatiilor transmise la pornire activitatii se face in metoda onCreate din act2.

 protected void onCreate(Bundle savedInstanceState) {
 // TODO Auto-generated method stub
 
 Bundle b = getIntent().getExtras();
 
 String x = (String) b.getString("x");