Intențiile sunt un subiect fundamental pentru dezvoltatorii Android. Este imposibil să construiți aplicații Android fără a intra în contact cu intențiile. În acest tutorial, vă voi învăța despre intențiile de la A la Z.
Într-un meci de fotbal, coechipierii trec mingea în jurul câmpului cu scopul de al trimite în scopul adversarului. Mingea este trecută de la portarul echipei către apărătorii lor. În continuare, își găsește drumul spre mijlocașii și, dacă lucrurile funcționează așa cum este planificat, unul dintre atacatori îl trimite în plasa adversarului. Presupunând că portarul din cealaltă parte nu a reușit să-l țină departe!
În Android, abilitatea de a trimite mesaje în jur este făcută posibilă de către scop
obiect. Cu ajutorul intențiilor, componentele Android pot solicita funcționalitate de la alte componente Android. Când deschideți aplicația Instagram de pe telefon și o utilizați pentru a face o fotografie, tocmai ați folosit intenția. Intențiile contribuie, de asemenea, la comunicarea între părți ale unei aplicații; mișcarea de la un ecran (activitate) la altul este posibilă prin intenții.
Uitați-vă în acest fel: toate componentele (aplicații și ecrane) ale dispozitivului Android sunt izolate. Singurul mod în care comunică între ei este prin intenții.
După cum am menționat mai devreme, puteți utiliza intențiile pentru a începe diferite componente: activități, servicii și receptoare de difuzare.
Pentru a începe o activitate, veți folosi metoda startActivity
(Intenție)
.
Iată un fragment de cod care demonstrează cum să porniți o altă activitate dintr-o intenție.
Intent numbersIntent = intenție nouă (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);
În primul rând, creăm un nou scop
obiecte și treceți-l NumbersActivity
clasă. Apoi începem o nouă activitate folosind intenția respectivă.
Android acceptă două tipuri de intenții: explicit și implicit. Atunci când o aplicație definește componenta țintă într-o intenție, că este o intenție explicită. Când aplicația nu numește o componentă țintă, aceasta este o intenție implicită.
Fragmentul de cod de mai sus este un exemplu de intenție explicită. Aruncă o privire din nou.
Intent numbersIntent = intenție nouă (MainActivity.this, NumbersActivity.class); startActivity (numbersIntent);
Aici, NumbersActivity
este componenta țintă din partea noastră Activitate principala
. Aceasta înseamnă că NumbersActivity
este componenta definită care va fi apelată de sistemul Android. Este important de menționat (ca și în exemplul de mai sus) că intențiile explicite sunt utilizate în mod obișnuit în cadrul unei aplicații, deoarece aceasta oferă dezvoltatorului cel mai mare control asupra clasei care va fi lansată.
Iată o intenție implicită:
Intenția intenției = intenția nouă (Intent.ACTION_VIEW, Uri.parse ("http://www.tutsplus.com")); startActivity (intenție);
Dacă aveți codul de mai sus în baza dvs. de cod, aplicația dvs. poate porni o componentă a browserului pentru o anumită adresă URL printr-o intenție. Dar cum arată sistemul Android componentele care pot reacționa la o anumită intenție?
O componentă poate fi înregistrată prin intermediul unui filtru de intenție pentru o acțiune specifică. Filtrele de intenție pot fi înregistrate pentru componentele statice în AndroidManifest.xml. Iată un exemplu care înregistrează o componentă ca vizualizator web:
Să scriem un cod pentru a vedea cum funcționează. În această secțiune, veți construi o aplicație minusculă pentru a încerca ambele stiluri de intenție. Aplicația va avea un formular mic pentru a introduce un nume și un prenume. Cand A depune butonul este apăsat, ambele valori introduse vor fi transmise unei alte activități. Va fi, de asemenea, un buton pentru a lansa un browser de alegere. Browserul ales va deschide http://code.tutsplus.com.
Deschideți Android Studio și generați-vă Activitate principala
. Puteți seta numele pachetului la com.tutsplus.code.android.droidintent.
Ta Activitate principala
va începe cu unele importuri și declarația de clasă:
pachet com.tutsplus.code.android.droidintent; import șiroid.content.Intent; importul android.net.Uri; import șiroid.support.v7.app.AppCompatActivity; import android.os.Bundle; import șiroid.view.View; import șiroid.widget.Button; importă android.widget.EditText; clasa publica MainActivity extinde AppCompatActivity
Apoi, veți suprascrie onCreate ()
metodă de inițializare a activității cu orice stare salvată și aspectul activității (vom crea acest lucru mai târziu).
@Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); // handlers de butoane du-te aici
Apoi veți primi referințe la fiecare dintre butoanele definite în aspect și atașați un ascultător de clicuri fiecăruia dintre ele.
ultimul Buton submitButton = (buton) findViewById (R.id.submit_button); submitButton.setOnClickListener (new View.OnClickListener () @Override public void onClick (Vizualizare v) EditText firstName = (EditText) findViewById (R.id.first_name_text); EditText lastName = (EditText) findViewById (R.id.last_name_text) ; String firstNameString = firstName.getText () String (); String lastNameString = LastName.getText (); toString (); Intenție submitIntent = Intent intent (MainActivity.this; ShowActivity.class); submitIntent.putExtra FirstNameString); submitIntent.putExtra ("lastNameString", lastNameString); startActivity (submitIntent););
Pentru A depune buton, ați setat un OnClickListener
pentru a declanșa o acțiune ori de câte ori faceți clic pe buton. Când apare un clic, luăm numele și prenumele din vizualizare și le trimitem la următoarea activitate: ShowActivity
. Componenta țintă este definită explicit în intenție, făcând acest lucru un exemplu de intenție explicită.
ultimul buton browserButton = (buton) findViewById (R.id.browser_button); browserButton.setOnClickListener (noul View.OnClickListener () @Override public void onClick (Vizualizare v) Intent intent = intenție nouă (Intent.ACTION_VIEW, Uri.parse ("https://code.tutsplus.com")); (intenție););
Pentru butonul browserului, OnClickListener
va crea o nouă intenție de a lansa orice aplicație care se potrivește cu filtrul: an ACTION_VIEW
care ar trebui să se ocupe de o adresă URL web. Cu alte cuvinte, lansează un browser web. Dacă aveți mai multe aplicații de browser instalate pe dispozitiv, vi se va solicita să selectați una pentru a efectua acțiunea de deschidere a site-ului Web. Acesta este un exemplu de intenție implicită.
Activitate principala
schemăStructura pentru Activitate principala
va fi foarte simplu în scopul acestui tutorial.
Aici aveți două TextView
si doi Editează textul
indicând Prenume și respectiv Nume. Există, de asemenea, un buton pentru a trimite numele și altul pentru a lansa browserul.
ShowActivity
Pentru a finaliza aplicația noastră, trebuie să creați o activitate care să se ocupe de intenția explicită definită mai sus. Creați o nouă activitate numită ShowActivity
. Aceasta este activitatea în care se va afișa rezultatul introducerii primului nume și a prenumelui. Iată cum ar trebui să arate:
pachet com.tutsplus.code.android.droidintent; import șiroid.support.v7.app.AppCompatActivity; import android.os.Bundle; import șiroid.widget.TextView; clasa publica ShowActivity extinde AppCompatActivity @Override protejat void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_show); Extras de pachete = getIntent () getExtras (); Inputul șiruluiFirstName = extras.getString ("firstNameString"); Inputul șiruluiLastName = extras.getString ("lastNameString"); TextView aratăFirstName = (TextView) findViewById (R.id.show_first_name); TextView aratăLastName = (TextView) findViewById (R.id.show_last_name); showFirstName.setText (inputFirstName); showLastName.setText (inputLastName);
În această activitate, începeți prin a obține șirurile transmise de la Activitate principala
. Puteți obține o referință la intenția care a declanșat lansarea acestei activități cu getIntent ()
funcţie. Apoi puteți accesa șirurile care i-au fost transmise folosind getExtras (). getString ()
. În cele din urmă, după ce ați obținut instanțele TextView din aspect, afișați valorile obținute.
Structura pentru această activitate este simplă:
Acum puteți să vă construiți aplicația și să o încercați pe dispozitivul Android!
De asemenea, puteți utiliza pachetele atunci când transmiteți date prin intenții.
Pachet
clasa vă permite să stocați date complexe și acceptă tipuri de date, cum ar fi șiruri de caractere, caractere, boolean, întreg și așa mai departe. Iată un exemplu despre cum parte din MainActivity.java ar arăta dacă ați folosit Pachet
.
// Crearea unui pachet Bundle obiect b = Bundle nou (); // Stocarea datelor în pachetul b.putString ("firstNameString", firstNameString); b.putString ("ultimNameString", lastNameString); // Crearea obiectului Intent Intent submitIntent = Intent (MainActivity.this, ShowActivity.class); // Stocarea obiectului pachetului în intenția submitIntent.putExtra (b); startActivity (submitIntent);
În acest tutorial, am primit o scurtă introducere în utilizarea intențiilor de a crea activități în Android. Am analizat diferența dintre intențiile explicite și cele implicite și am codificat un exemplu simplu care folosea fiecare tip.
Puteți citi mai multe despre intențiile din documentația Android. Înțelegerea modului în care lucrează este foarte importantă. Pe măsură ce construiți mai multe aplicații, veți întâlni o mulțime de diferite intenții și modalități de utilizare a acestora.
Între timp, verificați câteva dintre celelalte postări ale noastre privind dezvoltarea aplicațiilor Android!