Intenturi - Depanare

Intent-ul este evenimentul prin care doua activitati comunica. Deoarece pe ecran este afisata o singura activitate odata, avem nevoie de o activitate principala care sa genereze alte activitati. Acest lucru se realizeaza prin crearea unui intent:

Intent intent = new Intent(MainActivity.this, NewActivity.class);
startActivity(intent);

Fiecare activitate nou creata trebuie declarata in fisierul AndroidManifest.xml. Declararea se face astfel:

         <activity
          android:name=".New_Activity"
          android:label="new_activity" >
         </activity>

In multe situatii, activitatea noua are nevoie de niste parametrii provenind din prima activitate. Acesti parametrii sunt pasati cu ajutorul metodei putExtra(String nume, valoare). Valoarea pasata poate sa fie de aproape orice tip.
Activitatea nou creata va prelua datele transmise cu ajutorul metodei getStringExtra(nume), aceasta existand in mai multe variante in functie de tipul pe care dorim sa il obtinem.

Exemplu

In Main_Activity:

 String name="aaaa";
 Intent intent=new Intent(Main_Activity.this, New_Activity.class);
 intent.putExtra("name", name);
 startActivity(intent);

In New_Activity:

   
 Bundle b = new Bundle();
 b = getIntent().getExtras();
 String name = b.getString("name");
 System.out.println(nume);

Depanare

Depanarea este foarte importanta in procesul de realizare a aplicatiilor pentru dispozitive mobile. Acest proces este insa putin diferit fata de depanarea programelor clasice pentru calculator, in primul rand pentru ca ruleaza pe alt dispozitiv. Tocmai din acest motiv, avem nevoie de programe spcializate pentru a realiza depanarea. De asemenea, fiind vorba de dispozitive mobile, apar si anumite evenimente specifice, cum ar fi apeluri telefonice, descarcarea bateriei etc., evenimente ce trebuie tratate intr-un fel sau altul. In laboratorul de astazi vom prezenta programele de depanare existente si modul lor de functionare. De asemenea, ne vom ocupa putin de studierea evenimentelor ferestrelor.

DDMS

Utilitarul pentru depanarea aplicatiilor pentru Android se numeste DDMS (Dalvik Debug Monitor System). Acesta foloseste de fapt un alt utilitar, numit ADB (Android Debug Bridge), pentru a se conecta la simulatoare sau dispozitive fizice. Cu ajutorul DDMS putem vizualiza parametrii dispozitivului si a programelor ce ruleaza pe acesta. DDMS poate fi accesat sub forma unei perspective in Eclipse.

Activarea se face din meniul:

Window -> Open Perspective -> DDMS

Loguri

Logurile sistemului sunt cele mai importante informatii pe care le poate oferi DDMS. Aici sunt descrise toate actiunile indeplinite de catre dispozitiv, exceptiile aparute si informatii necesare depanaraii. Log-urile vor aparea in panoul denumit LogCat (a nu se confunda cu Console! - acestea sunt mesajele afisate de catre Eclipse).
Fiecare mesaj din aceasta lista este insotit de urmatoarele date (fiecare pe cate o coloana):

  • Tipul mesajului
    • I - Information - mesaj informativ
    • D - Debug - mesaj utile la depanare
    • W - Warning - mesaj de avertizare (exceptiile ce nu sunt foarte importante si nu au un impact important asupra componentei apar sub forma de astfel de mesaje)
    • E - Error - mesaj de eroare (exceptiile ce intrerup o componenta apar sub forma de astfel de mesaje)
    • V - Verbose - informatii suplimentare afisate de programe (in general la cerere, se folosesc la depistarea problemelor de functionare rezultate in general din cauza configurarii gresite a programelor)
  • Time - data si ora la care a fost scris mesajul
  • PID - ID-ul procesului ce a generat mesajul
  • Tag - Eticheta sau categoria mesajului (este util pentru filtre)
  • Message - mesajul propriu-zis (text)

Filtre

O alta functie importanta ce trebuie discutata este posibilitatea de filtrare a mesajelor de log. Deoarece LogCat agrega toate mesajele de log din sistem, urmarirea unor anumite mesaje poate fi dificila. Pentru a usura aceasta sarcina, se pot genera filtre dupa PID, TAG, TIP.
Un filtru se creaza prin apasarea butonului plus verde din bara panoului Log (respectiv LogCat in Eclipse).

Event Listeners

Un event listener este o interfata a clasei View, prin care avem control asupra evenimentelor declansate de user prin diferite actiuni.

Exemplu: Click pe buton

Button button1 = (Button) findViewById(R.id.buton1);
button1.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
      // TODO Auto-generated method stub
      // codul pentru actiunea butonului cand acesta este apasat normal
   }
  });

Exemplu: Long Click pe buton

button1.setOnLongClickListener(new OnLongClickListener() { 
        @Override
        public boolean onLongClick(View v) {
            // TODO Auto-generated method stub
            // codul pentru actiunea butonului cand acesta este apasat lung
            return true;
        }
    });

Exercitii

  1. Sa se creeze o fereastra care sa contina 4 butoane: Program Tabara, Cursuri, Regulament, Contact. Prin apasarea acestor butoane se vor deschide 4 ferestre aferente, in care vom avea un buton care atunci cand este apasat face sa apara o poza sugestiva titlului paginii.
  2. Sa se creeze o fereastra ce va contine 3 butoane cu numele unor filme cunoscute ( la alegere ) si cate un TextView ce va contine anul aparitiei si genul, separate prin spatiu. La apasarea unuia din butoane se va deschide o activitate noua care va contine trei TextView-uri in care se vor afisa numele (butonului care a creat fereastra), genul si vechimea filmului respectiv
  3. Modificati exercitiul anterior astfel incat la apasarea lunga a butonului sa se deschida o activitate in care sa se afiseze o imagine reprezentativa pentru filmul ales.

.

hint ex.2: String split

Bonus

  • Realizati o activitate care sa contina un LinearLayout vertical cu 3 ImageView-uri. Faceti astfel incat fiecare imagine sa apara pe rand cate 5 secunde, iar dupa 15 secunde sa ramana toate cele 3 imagini pe ecran.

hint: se va folosi clasa CountDownTimer

introducere_android/curs/curs4.txt · Ultima modificare: 2013/08/08 10:30 de către alexandra.barbatei
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0