Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ для ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Android. Π§Π°ΡΡ‚ΡŒ 1Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 2

Автор Π•Π²Π³Π΅Π½ΠΈΠΉ БСнько

Π‘Ρ‚Ρ€ΠΎΠΊΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ хранятся Π² xml-Ρ„Π°ΠΉΠ»Π°Ρ… Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния res/values. Π‘Ρ‚Ρ€ΠΎΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ стилях. Π’Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ, ΠΊΠ°ΠΊ HTML-Ρ‚Π΅Π³ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ прСимущСством хранСния строковых констант Π² Ρ„Π°ΠΉΠ»Π΅ рСсурсов являСтся простота ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Ρ‚.Π΅. ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ Π½Π° иностранныС языки. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π½Π° нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… языков, Ρ‚ΠΎ рСкомСндуСтся Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ язык ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – английский ΠΈ ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ строки Π½Π° английском языкС Π² xml-Ρ„Π°ΠΉΠ» strings Π² ΠΏΠ°ΠΏΠΊΡƒ рСсурсов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ – res/values. А Ρ„Π°ΠΉΠ»Ρ‹ со строками Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… языках – Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для русского языка – Π² res/values-ru, для французского – Π² res/values-fr, Π½Π΅ΠΌΠ΅Ρ†ΠΊΠΎΠ³ΠΎ – Π² res/values-de ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

Π’ΠΎ врСмя компиляции прилоТСния автоматичСски гСнСрируСтся класс R.java. Java-ΠΊΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ R-класс для доступа ΠΊ рСсурсам.

НаконСц, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°ΠΉΠ»Ρ‹ рСсурсов ΠΌΠΎΠ³ΡƒΡ‚ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ @string/string_name. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ этим строкам ΠΈΠ· java-ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π° этот Ρ€Π°Π· Π²Ρ‹ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ это Ρ‚Π°ΠΊ: R.string.string_name.

Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²ΠΈΠ΄ рСсурса – Layout ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ» Π»Π΅ΠΉΠ°ΡƒΡ‚Π°. Layout-Ρ„Π°ΠΉΠ» опрСдСляСт Π½Π° Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΡ…ΠΎΠΆ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ части (ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ экрана) вашСго прилоТСния. Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ записаны Π² xml, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ инструмСнты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π»Π΅ΠΉΠ°ΡƒΡ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎ, Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΠΈ Π·Π°Ρ‚Π΅ΠΌ эти инструмСнты ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ xml для вас.

К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Eclipse создаСт Layout-Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ res/layout вашСго прилоТСния. И Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Layout Π² Java ΠΊΠ°ΠΊ R.layout.layout_name. Π’Π°ΠΊ ΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Layout Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„Π°ΠΉΠ»Π°Ρ… рСсурсов ΠΊΠ°ΠΊ @layout/layout_name.

Android позволяСт Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Layout-Ρ„Π°ΠΉΠ»Ρ‹ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана, ΠΎΡ€ΠΈΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ экрана, Ρ€Π°Π·ΠΌΠ΅Ρ€Π° экрана ΠΈ Ρ‚.Π΄., ΠΈ Π·Π°Ρ‚Π΅ΠΌ Android ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· этих Ρ„Π°ΠΉΠ»ΠΎΠ² Π½ΡƒΠΆΠ½Ρ‹ΠΉ прямо Π²ΠΎ врСмя выполнСния прилоТСния Π½Π° основС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ вашСго устройства.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ„Π°ΠΉΠ» R.java. Как ΡƒΠΆΠ΅ ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ, этот Ρ„Π°ΠΉΠ» автоматичСски сгСнСрирован Android, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Ρ‹ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΅Π³ΠΎ. Π€Π°ΠΉΠ» опрСдСляСт класс R, ΠΈ этот класс R содСрТит Π΄Ρ€ΡƒΠ³ΠΎΠΉ класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Layout, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Main. И это фактичСски Π΄Π°Π΅Ρ‚ Π²Π°ΠΌ ссылку ΠΈΠ»ΠΈ дСскриптор ΠΊ Ρ„Π°ΠΉΠ»Ρƒ main.xml.

Π•ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ класс ID, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ дСскрипторы для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π»Π΅ΠΉΠ°ΡƒΡ‚ΠΎΠ², тСкстовых ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΠ»Π΅ΠΉ рСдактирования ΠΈ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π² Ρ„Π°ΠΉΠ»Π΅ main.xml. Если Π²Ρ‹ Π²Π΅Ρ€Π½Π΅Ρ‚Π΅ΡΡŒ ΠΈ посмотритС main.xml-Ρ„Π°ΠΉΠ», Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… написано Β«Android:IDΒ». Π­Ρ‚ΠΎ – Ρ‚ΠΎ, ΠΎΡ‚ΠΊΡƒΠ΄Π° эти поля ΠΈ ID ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π΅ΡΡ‚ΡŒ класс String, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ обСспСчиваСт дСскрипторы для всСх строк, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ шаг Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ – это рСализация Π²Π°ΡˆΠΈΡ… Java-классов. Π­Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя написаниС ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠΉ Activity. Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π° для Activity – ΠΌΠ΅Ρ‚ΠΎΠ΄ onCreate. Π­Ρ‚ΠΎ – Ρ‚ΠΎ, Π³Π΄Π΅ Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ своС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΌΠ΅Ρ‚ΠΎΠ΄ onCreate Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ. Π’ onCreate Π²Ρ‹ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Π²Π΅Ρ‰ΠΈ:

Π²Ρ‹ восстанавливаСтС сохранСнноС состояниС прилоТСния;

Π²Ρ‹ устанавливаСтС Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС content view, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сообщаСт Π°Π½Π΄Ρ€ΠΎΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ вывСсти Π½Π° экран Π² качСствС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Activity;

Π²Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса своСго Activity;

ΠΈ послСднСС – Π²Ρ‹ присоСдиняСтС ΠΊΠΎΠ΄ ΠΊ элСмСнтам ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия Π±Ρ‹Π»ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с этими элСмСнтами Activity.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, ΠΊΠ°ΠΊ эти шаги Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π² Β«MapLocationΒ». Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Β«MapLocationΒ» Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ класс ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ MapLocation, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся подклассом Activity.

На ΠΏΠ΅Ρ€Π²ΠΎΠΌ шагС onCreate Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ super.onCreate, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² сохранСнноС состояниС Π² качСствС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°. Π­Ρ‚ΠΎ сохранСнноС состояниС (savedInstanceState) – Π² основном структура Π΄Π°Π½Π½Ρ‹Ρ…, содСрТащая Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Android, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, сохранил с ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Ρ€Π°Π·Π°, ΠΊΠΎΠ³Π΄Π° эта Activity Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ большС ΠΎΠ± этом Π΄Π°Π»Π΅Π΅, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ погрузимся Π³Π»ΡƒΠ±ΠΆΠ΅ Π² класс Activity. Но Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ просто Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ onCreate Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ super.onCreate, ΠΈΠ»ΠΈ Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ΄Π΅Ρ‚ Π²Ρ‹Π·ΠΎΠ² setContentView. Π’ нашСм случаС для Π²Ρ‹Π²ΠΎΠ΄Π° Π½Π° экран содСрТимого Ρ„Π°ΠΉΠ»Π° Π»Π΅ΠΉΠ°ΡƒΡ‚Π° этого прилоТСния – R.layout.main. ПослС этого ΠΈΠ΄Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ устанавливаСт соотвСтствия ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов UI с Π»Π΅ΠΉΠ°ΡƒΡ‚ΠΎΠΌ. Π’Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ тСкстовоС ΠΏΠΎΠ»Π΅ рСдактирования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сохранСно Π² Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ addrText, ΠΈ ΠΊΠ½ΠΎΠΏΠΊΠ°, которая сохранСна Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ button. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, эти ссылки ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° activity.findViewById, содСрТащСм Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ элСмСнта.

И Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт Ρ‡Ρ‚ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Show Map. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс onClickListener (Β«ΡΠ»ΡƒΡˆΠ°Ρ‚Π΅Π»ΡŒΒ» ΠΊΠ»ΠΈΠΊΠΎΠ²), Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π΅ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ onClick, Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉΡΡ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π·, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΊΠ»ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅. Код Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ onClick сначала считываСт тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Π²Π΅Π» Π² ΠΏΠΎΠ»Π΅ адрСса. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ этот тСкст, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹, ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚ Β«Google MapsΒ». Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Β«Google MapsΒ» ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π΅ΠΌΡƒ этот ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ адрСс.

Π§Ρ‚ΠΎ этот ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚, Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΡ‹ рассмотрим ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° погрузимся Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ классов Activity ΠΈ Intent. Π’Π°ΠΊΠΆΠ΅ для упрощСния я Π½Π΅ ΡƒΡ‡Π΅Π» Π»ΡŽΠ±ΡƒΡŽ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Π½Π° ошибки ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ строки адрСса, которая Π±Ρ‹Π»Π° Π²Π²Π΅Π΄Π΅Π½Π°. Но Π² ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ это сдСлаСтС.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом Π² создании Android-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ являСтся прСдоставлСниС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая позволяСт Андроиду ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ прилоТСния ΠΈΠ»ΠΈ APK, ΠΈ эта информация записываСтся Π² манифСстС – xml-Ρ„Π°ΠΉΠ»Π΅ androidmanifest.xml. Π€Π°ΠΉΠ» androidmanifest.xml содСрТит большоС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ имя прилоТСния ΠΈ список ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Он Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ обсудим ΠΏΠΎΠ·ΠΆΠ΅. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π΅Ρ‰ΠΈ ΠΊΠ°ΠΊ: Permissions (полномочия), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ°ΠΌΠ΅Ρ€Π°, Ссли ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ этого прилоТСния, ΠΈ самая ранняя вСрсия ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ смоТСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Ρ„Π°ΠΉΠ» androidmanifest.xml для Β«MapLocationΒ».

Π€Π°ΠΉΠ» androidmanifest.xml находится Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ прилоТСния. Один ΠΈΠ· элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ здСсь, являСтся элСмСнтом uses-SDK. Π­Ρ‚ΠΎΡ‚ элСмСнт Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ minSdkVersion, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ API для этого прилоТСния. И Π² нашСм случаС этот ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ равняСтся 13, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Android 3.2.

Π­Ρ‚ΠΎΡ‚ элСмСнт Ρ‚Π°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ – targetSdkVersion, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ опрСдСляСт послСдний ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ API, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±Ρ‹Π»ΠΎ протСстировано это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ 19, Ρ‡Ρ‚ΠΎ соотвСтствуСт вСрсии Android 4.4.2.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт манифСста – application, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹: ΠΈΠΊΠΎΠ½ΠΊΡƒ для этого прилоТСния, ΠΌΠ΅Ρ‚ΠΊΡƒ, которая ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π² строкС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° прилоТСния, элСмСнт Activity, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСрСчисляСт Π² нашСм случаС всСго ΠΎΠ΄Π½Ρƒ Activity – MapLocation, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ это ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

И послСдним шагом ΠΌΡ‹ устанавливаСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° устройство ΠΈΠ»ΠΈ эмулятор, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚Π»Π°Π΄ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Класс Activity

Activity – основной класс для взаимодСйствия с ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ. Activity Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ интСрфСйс, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ. И условно Activity Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ модулями прилоТСния Π² Ρ‚ΠΎΠΌ смыслС, Ρ‡Ρ‚ΠΎ каТдая Activity, ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π² фокусС Π΅Π΄ΠΈΠ½ΡΡ‚Π²Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ‰ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ с вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ просмотр элСктронного письма ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π· экрана Π²Ρ…ΠΎΠ΄Π° Π² систСму.

Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ выполняСт свою Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΎΠ½ пСрСмСщаСтся ΠΏΠΎ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠ΅ ΠΈΠ· Аctivity, ΠΈ Android ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ Π² Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ нСсколькими способами, поддСрТивая ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡŽ прилоТСния, обСспСчивая Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Activity Π² стСкС (backstack), Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ приостановлСны ΠΈ Π·Π°Ρ‚Π΅ΠΌ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ ΠΈΠ· стСка.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π·Π°Π΄Π°Ρ‡Π° (Task) Π² Android – это ряд связанных Activity. Π­Ρ‚ΠΈ связанныС Activity ΠΌΠΎΠ³ΡƒΡ‚, Π½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ прилоТСния. Одна Π·Π°Π΄Π°Ρ‡Π° (Task) ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ…Π²Π°Ρ‚ΠΈΡ‚ΡŒ нСсколько ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ Π·Π°Π΄Π°Ρ‡ запускаСтся с домашнСго экрана. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с домашнСго экрана, ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ запускаСтся новая Π·Π°Π΄Π°Ρ‡Π° (Task). И ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«Π”ΠΎΠΌΠΎΠΉΒ», Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ Π½Π°Π·Π°Π΄ ΠΊ Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΌΡƒ экрану, тСкущая Π·Π°Π΄Π°Ρ‡Π°, ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ, приостанавливаСтся.

Π‘Ρ‚Π΅ΠΊ Π·Π°Π΄Π°Ρ‡ΠΈ (Task backstack) Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Когда Activity Π·Π°ΠΏΡƒΡ‰Π΅Π½Π°, ΠΎΠ½Π° заносится Π² Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ячСйку стСка ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. А ΠΊΠΎΠ³Π΄Π° эта Activity ΠΏΠΎΠ·ΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ «Назад», ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Activity сама Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»Π° свою Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ, ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ сам Android Ρ€Π΅ΡˆΠΈΠ» ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠΈΡ‚ΡŒ эту Activity, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ Π΅ΠΉ рСсурсы, Ρ‚ΠΎΠ³Π΄Π° Activity удаляСтся ΠΈΠ· Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ ячСйки стСка Π·Π°Π΄Π°Ρ‡.