Prijenos podataka između aktivata. Prebacite između aplikacijskih zaslona. Tko je stavio mačku Vašku - vratite rezultat natrag

Aplikacija se ne sastoji uvijek od jednog zaslona. Na primjer, stvorili smo vrlo koristan program i korisnik želi znati tko je njegov autor. On pritisne gumb "o programu" i pada na novi zaslon, gdje korisne informacije o verziji programa, autor, adresu stranice, koliko mačaka i tako dalje. Vizite zaslon aktivnosti kao web-stranicu s vezom na drugu stranicu. Ako pogledate kod u datoteci Mainactivity.java. Iz prošlosti lekcije vidjet ćete da je naš razred Glavna aktivnost. također se odnosi na Aktivnost (ili njegovi nasljednici) ili, preciznije, naslijeđeni od njega.

Voditeljica javne klase proširuje appcompatactivity

Kako je lako pogoditi, trebamo stvoriti novi razred, koji može biti sličan Glavna aktivnost. I onda nekako prebacite na njega kada pritisnete gumb.

Za eksperiment ćemo uzeti program iz prve lekcije i koristiti gumb za eksperimente (ili stvoriti novi projekt s jednim gumbom na zaslonu). Zatim stvorite novi obrazac za prikaz korisnih informacija. Na primjer, pokažite korisniku koji izrađuje mačku kada ide lijevo i desno. Slažem se, to su vrlo važne informacije koje daje ključ za negnaciju svemira.

Ručno ćemo stvoriti novu aktivnost, iako u studiju postoje gotovi uzorci. Ali ne postoji ništa komplicirano i za bolje razumijevanje je korisno učiniti sve s vašim rukama.

Stvorite novu XML oznaku datoteku activity_About.xml u mapi res / izgled., Desnom tipkom miša kliknite mapu izgleda. i odaberite iz kontekstnog izbornika Novo | Datoteka resursa izgleda., Pojavljuje se dijaloški okvir. U prvom polju unesite naziv datoteke aktivnost_About, U drugom, morate ući u korijenski element. Zadano stoji Ograničenje., Peremo tekst i unesite ScrollView., Unos više znakova je dovoljno da studio predloži gotove opcije, možete odmah pritisnuti Enter, bez čekanja riječi puni ulaz:

Ispada odgovarajući lilter u kojem će element umetnuti TextView..

Informacije će biti uklonjene iz resursa, naime iz niza resursa. o_text, Sada je označeno crvenom bojom, signaliziranje o odsutnosti informacija. Bilo je moguće kliknuti Alt + Enter. I unesite tekst u dijaloškom okviru. Ali za naš primjer, ova metoda neće odgovarati, budući da će naš tekst biti multiplay, koristeći kontrolne znakove. Stoga nastavite na drugačiji način. Otvorena datoteka res / vrijednosti / strings.xml I ručno unesite sljedeći tekst:

U lukumorye hrast zelene; n dječji lanac na Dub Tom: n i dan i noć mačkan sve hoda oko lanca oko; pravo - Ispada pjesme, n Lijevo - kaže bajka.

Koristili smo najjednostavnije oznake za oblikovanje teksta HTML-a , , , Za naš primjer, dovoljno je istaknuti masne riječi koje pripadaju mačji i smjeru kretanja. Za prijenos teksta na novi niz, koristite znakove N., Dodajte drugi izvor izvora za zaglavlje novog zaslona:

O programu

Oznaka je shvatila. Zatim trebate stvoriti razred za prozor Oguhavost.java., Odaberite u izborniku Datoteka | Novo | Java klasa. i ispunite desna polja. U početku, dovoljno je odrediti samo ime. Zatim katastrofa s drugim poljima.

Dobivamo radni komad.

Sada je razred gotovo prazan. Dodajte kôd ručno. Klasa mora biti naslijeđena od apstraktne klase Aktivnost ili njegovi rođaci Fragmentaktivnost., Appadpataktivnost itd Završi proširuje aktivnost., Klasa aktivnosti trebala bi imati metodu podcreate (), Stavili smo pokazivač miša unutar razreda i odaberite u izborniku Koda | Nadjačati metode. (Ctrl + O). U dijaloškom okviru tražimo željenu klasu, možete birati prve znakove za brzo pretraživanje na tipkovnici. U stvorenoj metodi morate nazvati metodu setconntentView ()koji će učitati pripremljenu oznaku na zaslonu. Imat ćemo ovu opciju.

Paket ru.Alexanderklimov.Hollorld; Uvoz android.app.agitivity; Uvoz android.os.bundle; / ** * stvorio Alexander Klimov na 01.12.2014. * / Javna klasa oštrica proširuje aktivnost (savedstancestat); SETConntentView (r.layouut.activity_about);)))

Sada počinje najvažnija stvar. Naš zadatak je da ide na novi zaslon kada kliknete gumb na prvom zaslonu. Vratite se na razred Glavna aktivnost., Pišemo klik klik kliknite Rukovatelj:

Javna prazna OnClick (Malavnost.This, Ayactivity.class); Startactivity (namjera);)

Ovdje sam koristio način da se nosima s pritiskom na koji je rečeno u razredu.

Da biste započeli novi zaslon, morate stvoriti instancu klase. Namjera i navedite trenutni razred u prvom parameru, au drugom - klasu za tranziciju, imamo ga Okovanost, Nakon toga se naziva metoda startActivity ()koji pokreće novi zaslon.

Ako sada pokušate provjeriti rad aplikacije u emulatoru, primit ćete poruku o pogrešci. Što smo učinili krivo? Propustili smo jedan važan korak. Trebate registrirati novo Aktivnost Manifesta Androidmanifest.xml., Pronađite ovu datoteku u svom projektu i kliknite na nju dvaput. Otvara se prozor za uređivanje datoteka. Dodajte novu oznaku Nakon zatvaranja oznake Za prvu aktivnost. Ispišite sebe i aktivno koristite savjete. Ispada sljedeće:

Tako je resurs string bio koristan. o_title, Pokrenite aplikaciju, kliknite na gumb i uzmi prozor O programu, Tako smo naučili kako stvoriti novi prozor i nazvati ga da kliknete gumb. I na raspolaganju se na raspolaganju Megaudobalni program - sada će uvijek biti nagovještaj, što čini mačku kada ostane lijevo.

Ponovno gledam da je druga stvorena klasa aktivnosti trebala biti naslijeđena od razreda Aktivnost ili ga kao ( Popis. itd.), imaju XML oznaku datoteke (ako je potrebno) i biti registriran u manifestu.

Nakon pozivanja metode startActivity () Nova aktivnost će biti lansirana (u ovom slučaju Okovanost), bit će vidljivo i pomiče se na vrh stog koji sadrži radne komponente. Prilikom pozivanja metode zAVRŠI () Nove aktivnosti (ili kada pritisnete povratni hardverski ključ), bit će zatvoreno i uklonjeno iz stog. Developer se također može premjestiti na prethodnu (ili na bilo koju drugu) aktivnost koristeći istu metodu startActivity ().

Stvoriti treći zaslon - način lijenog

Programeri, poput mačaka, su lijena stvorenja. Stalno se sjećam da je za aktivnost koju trebate stvoriti oznaku i klasu koja je naslijeđena Aktivnost, A onda ne zaboravite registrirati razred u manifestu - da, Nafig.

U tom slučaju odaberite u izborniku Datoteka | Novo | Aktivnost | Osnovna aktivnost (ili drugi predložak). Nadalje, pojavit će se poznati prozor za stvaranje nove aktivnosti. Popunite potrebna polja.

Kliknite na gumb ZAVRŠI. I aktivnost će biti spremna. Da biste bili sigurni da, otvorite manifest datoteku i provjerite dostupnost novog unosa. Više ne kažem o spisima razreda i označavanja, oni će se pojaviti ispred vas.

Sam Dodajte novi gumb na glavnom zaslonu aktivnosti i napišite kôd za prijelaz na stvorenu aktivnost.

Isprva bih vam savjetovao da ručno stvorite sve potrebne komponente za novu aktivnost da biste razumjeli odnos između razreda, označavanja i manifesta. A kada imate ruku, možete koristiti čarobnjak za stvaranje aktivnosti kako biste ubrzali rad.

Prijenos podataka između aktivnosti

Koristili smo najjednostavniji primjer za nazivanje drugog zaslona aktivnosti. Ponekad je potrebno ne samo da biste nazvali novi zaslon, već i prijenos podataka. Na primjer, korisničko ime. U tom slučaju morate koristiti posebno područje extradata.koji je dostupan u razredu Namjera.

Regija extradata. - Ovo je popis parova ključ / vrijednostkoji se prenosi zajedno s namjerom. Linije se koriste kao ključevi, a za vrijednosti koje možete koristiti primitivne vrste podataka, primitivnih polja, klase objekata Paket. i tako dalje.

Za prijenos podataka koristi se metoda druge aktivnosti putextra ():

Namjera.PutExtra ("ključ", "vrijednost");

Uzimanje aktivnosti trebala bi uzrokovati prikladnu metodu: getintextra (), gettstruingextra () itd.:

Int count \u003d gettent (). GetIntextra ("ime", 0);

Pomažemo prethodni primjer. Već imamo tri aktivnosti. Na prvoj aktivnosti bit će postavljena dva teksta i gumb. Izgled može biti sljedeći:

U drugoj aktivnosti Sredstva. Element za ugradnju TextView.gdje ćemo prikazati tekst dobiven iz prve aktivnosti. Pišemo sljedeći kod za metodu podcreate () U drugoj aktivnosti.

@OERRIDE zaštićeno praznina (paket savedinstancestate) (super.oncreat (savedinstancestat); SETConntentView (r.layouut.activity_second); string korisnik \u003d "Zhyvotnyh"; string dar \u003d "Donut Hole"; TextView InfoTextView \u003d (TextView) FindViewByid (r .Id.Textviewinfo); InfoTextView.setsetxt (korisnik + ", bili ste poslani" + dar);)

Ako sada pokrenete program i jednostavno nazovite drugi prozor, kao što je opisano u prvom dijelu članka, vidjet ćemo zadani natpis Žuto, prolazili ste rupu iz peciva, Slažem se, to je prilično uvredljivo za primanje takvih poruka.

Popravim situaciju. Dodaj kod iz prve aktivnosti:

Javno void Onclick (Prikaz View) (Edittext UseDeritsetEt \u003d (EditText) FindViewByid (r.id.editteextext); edittext giftenettext \u003d (edittext) feindviewbiid (r.id.edittextgift); namjerna namjera \u003d nova namjera (maILactivity.this, sentraktivnost. Klasa); // U korisničkom imenu tipku, vi ćete PIHEM tekst iz prvog tekstualnog polja Intent.PutExtra ("Korisničko ime", UserditText.getText (). Tostring ()); // b Key Poklon Piham Tekst iz drugog teksta Intent.PutExtra ("Poklon", giftenettexext.gettext (). Tostring ()); potaknuta (namjera);)

Stavili smo u posebni objekt spremnik Namjera Dvije tipke s vrijednostima koje se uzimaju iz tekstualnih polja. Kada korisnik uđe u podatke u tekstualne polja, oni će pasti u ovaj spremnik i bit će preneseni na drugu aktivnost.

Druga aktivnost trebala bi biti spremna za topli prijem poruka na sljedeći način (označena masnoća).

// default vrijednosti string korisnik \u003d "žuta"; Gudački dar \u003d "rupa iz mjehurića"; korisnik \u003d getIntent (). GetExtras (). Getstring ("korisničko ime"); Dar \u003d gettent (). GetExtras (). Getstring ("dar"); TextView InfoTextView \u003d (TextView) FindViewbid (r.id.textviewinfo); InfoTextView.settext (korisnik + ", bili ste poslani" + dar);

Sada poruka ne izgleda ovako, ali čak i ugodno za nekoga. U teškim primjerima, poželjno je dodati ček pri obradi podataka. Postoje situacije kada pokrenete drugu aktivnost s praznim tipom podataka nulaŠto može dovesti do kolapsa aplikacije.

U našem slučaju, znamo da čekamo nizovnu vrijednost, tako da se kod može prepisati:

Namjerna namjera \u003d gettent (); korisnik \u003d intenter.getstringextra ("korisničko ime");

Korisnik \u003d getIntent (). Getstruingextra ("korisničko ime");

Program ima nedostatak - nije jasno od koga dobivamo. Svaka dobro odgojna ment neće uzeti dar od anonimnog izvora. Stoga, kao domaća zadaća, dodajte drugi tekstni okvir za unos imena korisnika koji šalje poruku.

Google preporučuje korištenje sljedećeg formata za ključeve: naziv vašeg paketa kao prefiks, a zatim i sam ključ. U tom slučaju, možete biti sigurni u jedinstvenost ključa prilikom interakcije s drugim aplikacijama. Cca ovako:

Javni konačni statički string korisnik \u003d "ru.Alexanderklimov.myapp.user";

Tko je stavio mačku Vašku - vratite rezultat natrag

Ne događa se uvijek jednostavno prenijeti ove druge aktivnosti. Ponekad morate dobiti informacije iz druge aktivnosti kada je zatvorena. Ako smo koristili metodu staravljenje (namjera namjere)Zatim postoji relativna metoda startematiforresult (namjera namjere, int zahtjev kvoda), Razlika između metoda je dodatni parametar Zahtjev., Zapravo, to je samo cijeli broj koji možete sjetiti sebe. Potrebno je kako bi se razlikovao od koga je rezultat došao. Pretpostavimo da imate pet dodatnih zaslona i dodjeljujete vrijednosti od 1 do 5, a na ovom kodu možete odrediti čiji rezultat trebate obraditi. Možete koristiti -1, a zatim će biti ekvivalentni metodom startActivity (), Neću dobiti nikakav rezultat.

Ako koristite metodu startnometriford ()Morate poništiti metodu u kodu za primanje rezultata onactivityresult () i obraditi rezultat. Zbunjeni? Pitamo se primjer.

Pretpostavimo da ste jelen. Informacije su primljene da su dva komada kobasica i drugih proizvoda ukradena iz restorana iz tablice utjecajne osobe. Balsusage Palo na tri osumnjičenika - vrana, jebena maca i mačka Vaska.

Jedan od posjetitelja pružio je niz fotografija iz svog praha iPhonea:


Tu je i naznaka drugog svjedoka: I Vaska sluša, da jede.

Stvoriti novi projekt Sherlock S dvije aktivnosti. Na prvom zaslonu bit će gumb za prebacivanje na drugi zaslon i naljepnicu teksta u kojoj će se prikazati ime lopova.