diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/bottomnavigation/BottomNavigationActivity.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/bottomnavigation/BottomNavigationActivity.java index d1a10466..4663ebbf 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/bottomnavigation/BottomNavigationActivity.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/bottomnavigation/BottomNavigationActivity.java @@ -26,7 +26,7 @@ protected void onCreate(Bundle savedInstanceState) { edgeToEdgeDelegate.applyEdgeToEdgeBottomBar(binding.container, binding.bottomNav); binding.bottomNav.setOnItemSelectedListener(item -> { - binding.textView.setText(getString(R.string.selected) + " " + item.getTitle()); // FIXME: Do not concatenate text displayed with `setText`. Use resource string with placeholders. + binding.textView.setText(getString(R.string.selected, item.getTitle())); return true; }); diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/drawer/NavigationDrawerActivity.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/drawer/NavigationDrawerActivity.java index 1a980819..7323a36d 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/drawer/NavigationDrawerActivity.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/navigation/drawer/NavigationDrawerActivity.java @@ -27,7 +27,7 @@ protected void onCreate(Bundle savedInstanceState) { edgeToEdgeDelegate.applyEdgeToEdge(binding.container); binding.navigationView.setNavigationItemSelectedListener(item -> { - binding.textView.setText(getString(R.string.selected) + " " + item.getTitle()); // FIXME: Do not concatenate text displayed with `setText`. Use resource string with placeholders. + binding.textView.setText(getString(R.string.selected, item.getTitle())); binding.drawerLayout.closeDrawer(GravityCompat.START); return true; }); diff --git a/app/src/main/res/values-ar-rEG/strings.xml b/app/src/main/res/values-ar-rEG/strings.xml index f7e7cb4d..c5e2d623 100644 --- a/app/src/main/res/values-ar-rEG/strings.xml +++ b/app/src/main/res/values-ar-rEG/strings.xml @@ -229,7 +229,7 @@ التبويب الافتراضي عناوين شريط التنقل السفلي معنون - المحدد + المحدد %1$s غير معنون التنقل شريط التنقل السفلي diff --git a/app/src/main/res/values-bg-rBG/strings.xml b/app/src/main/res/values-bg-rBG/strings.xml index 326ebb59..a8b93c7d 100644 --- a/app/src/main/res/values-bg-rBG/strings.xml +++ b/app/src/main/res/values-bg-rBG/strings.xml @@ -255,7 +255,7 @@ Раздел по подразбиране Етикети на долната навигационна лента С етикети - Избрани + Избрани %1$s Без етикети Навигация Долна навигация diff --git a/app/src/main/res/values-bn-rBD/strings.xml b/app/src/main/res/values-bn-rBD/strings.xml index ebe0d9b8..417ae8c9 100644 --- a/app/src/main/res/values-bn-rBD/strings.xml +++ b/app/src/main/res/values-bn-rBD/strings.xml @@ -255,7 +255,7 @@ ডিফল্ট ট্যাব নিচের নেভিগেশন বার লেবেল লেবেলযুক্ত - নির্বাচিত + নির্বাচিত %1$s লেবেলবিহীন নেভিগেশন নীচের নেভিগেশন diff --git a/app/src/main/res/values-de-rDE/strings.xml b/app/src/main/res/values-de-rDE/strings.xml index 915a18c1..99822a99 100644 --- a/app/src/main/res/values-de-rDE/strings.xml +++ b/app/src/main/res/values-de-rDE/strings.xml @@ -255,7 +255,7 @@ Standard-Tab Beschriftungen der unteren Navigationsleiste Beschriftet - Ausgewählt + Ausgewählt %1$s Unbeschriftet Navigation Untere Navigation diff --git a/app/src/main/res/values-es-rGQ/strings.xml b/app/src/main/res/values-es-rGQ/strings.xml index 5831ae1a..3005b7b1 100644 --- a/app/src/main/res/values-es-rGQ/strings.xml +++ b/app/src/main/res/values-es-rGQ/strings.xml @@ -255,7 +255,7 @@ Pestaña predeterminada Etiquetas de la barra de navegación inferior Etiquetado - Seleccionado + Seleccionado %1$s Sin etiquetar Navegación Navegación inferior diff --git a/app/src/main/res/values-es-rMX/strings.xml b/app/src/main/res/values-es-rMX/strings.xml index cdc3450e..04d7781c 100644 --- a/app/src/main/res/values-es-rMX/strings.xml +++ b/app/src/main/res/values-es-rMX/strings.xml @@ -229,7 +229,7 @@ Pestaña predeterminada Etiquetas de la barra de navegación inferior Etiquetado - Seleccionado + Seleccionado %1$s Sin etiquetar Navegación Navegación inferior diff --git a/app/src/main/res/values-fil-rPH/strings.xml b/app/src/main/res/values-fil-rPH/strings.xml index 8a2f44f4..19b11360 100644 --- a/app/src/main/res/values-fil-rPH/strings.xml +++ b/app/src/main/res/values-fil-rPH/strings.xml @@ -229,7 +229,7 @@ Default na tab Mga label ng bottom navigation bar May label - Napili + Napili %1$s Walang label Nabigasyon Nabigasyong nasa ibaba diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml index 79f55491..bf33bcbc 100644 --- a/app/src/main/res/values-fr-rFR/strings.xml +++ b/app/src/main/res/values-fr-rFR/strings.xml @@ -255,7 +255,7 @@ Onglet par défaut Étiquettes de la barre de navigation inférieure Étiqueté - Sélectionné + Sélectionné %1$s Non étiqueté Navigation Navigation inférieure diff --git a/app/src/main/res/values-hi-rIN/strings.xml b/app/src/main/res/values-hi-rIN/strings.xml index 544f88a7..d2757860 100644 --- a/app/src/main/res/values-hi-rIN/strings.xml +++ b/app/src/main/res/values-hi-rIN/strings.xml @@ -256,7 +256,7 @@ डिफ़ॉल्ट टैब बॉटम नेविगेशन बार लेबल लेबल किया हुआ - चयनित + चयनित %1$s लेबल रहित नेविगेशन निचला नेविगेशन diff --git a/app/src/main/res/values-hu-rHU/strings.xml b/app/src/main/res/values-hu-rHU/strings.xml index 2b03bcbf..dbab508c 100644 --- a/app/src/main/res/values-hu-rHU/strings.xml +++ b/app/src/main/res/values-hu-rHU/strings.xml @@ -1,5 +1,5 @@ - + Képnézet előnézete Tanuld meg, hogyan készíts egyszerű Java alkalmazásokat az Android Studioban. 📱 Új frissítés érhető el. @@ -276,7 +276,7 @@ Alapértelmezett lap Alsó navigációs sáv címkék Címkézett - Kiválasztva + Kiválasztva %1$s Címke nélküli Navigáció Alsó navigáció @@ -417,7 +417,7 @@ A Linear Layout Compat egy osztály az Android appCompat v7 támogatói könyvtárban. Azért adták hozzá, hogy a régebbi API-szinteken is támogassa az újabb API-szinteken bevezetett metódusokat (például az elválasztókat). Ha összehasonlítod a LinearLayout és a LinearLayoutCompat metódusait, láthatod, hogy a Compat elrendezés rendelkezik a LinearLayout összes metódusával API-szint korlátozás nélkül. Például a setShowDividers metódust az API 11-es szintjén vezették be. Ezért ebben az esetben a setShowDividers (és paraméterei) meghívásához a Linear Layout Compatet kell használni a LinearLayout helyett, ha 11 alatti API-szintű platformot célozol. Adományod segít az alkalmazás működtetésében és a funkciók fejlesztésében. Köszönjük a nagylelkűségedet. Ismerd meg, hogyan használhatsz folyamatjelző sávokat Androidon ezzel az interaktív leckével. A lecke két részt tartalmaz: egyet a vízszintes folyamatjelző sávhoz és egyet a kör alakú folyamatjelző sávhoz. Mindegyik részben láthatod, hogyan frissül a folyamatjelző sáv, ahogy a letöltés halad. A lecke kódját is megtekintheted a képernyő alján található lebegő műveletgombra kattintva. - Az Android egy mobil operációs rendszer, amelyet a Google fejlesztett. Először 2007. november 5-én adták ki béta verzióként, az első kereskedelmi verziót, az Android 1.0-t pedig 2008. szeptember 23-án indították. Az Android a Linux kernel módosított verzióján és más nyílt forráskódú szoftvereken alapul.\n\nAz Android Studio az Android-alkalmazás-fejlesztés hivatalos integrált fejlesztőkörnyezete (IDE). A Google a 2013. május 15-i I/O konferenciáján jelentette be, és 2014. december 8-án tette elérhetővé a nagyközönség számára. Az Android Studio az IntelliJ IDEA-ra épül, egy népszerű Java IDE-re.\n\nA Kotlin egy többplatformos programozási nyelv, amely a Java virtuális gépen (JVM), Androidon, böngészőben és natív platformokon is fut. A JetBrains, egy prágai székhelyű szoftvercég hozta létre. A Kotlin első bejelentése 2011 júliusában történt, és 2012 februárjában adták ki nyílt forráskódú projektként.\n\nA Google 2017. május 17-én, az I/O konferencián jelentette be, hogy hivatalosan támogatja a Kotlin nyelvet az Android-alkalmazás-fejlesztéshez. Azóta a Kotlin az egyik legnépszerűbb nyelvvé vált az Android fejlesztők körében. A Google 2020 októberi adatai szerint az első 1000 alkalmazás több mint 70%-a a Google Playen Kotlin nyelvet használ. + Az Android egy mobil operációs rendszer, amelyet a Google fejlesztett. Először 2007. november 5-én adták ki béta verzióként, az első kereskedelmi verziót, az Android 1.0-t pedig 2008. szeptember 23-án indították. Az Android a Linux kernel módosított verzióján és más nyílt forráskódú szoftvereken alapul.\n\nAz Android Studio az Android-alkalmazás-fejlesztés hivatalos integrált fejlesztőkörnyezete (IDE). A Google a 2013. május 15-i I/O konferenciáján jelentette be, és 2014. december 8-án tette elérhetővé a nagyközönség számára. Az Android Studio az IntelliJ IDEA-ra épül, egy népszerű Java IDE-re.\n\nA Kotlin egy többplatformos programozási nyelv, amely a Java virtuális gépen (JVM), Androidon, böngészőben és natív platformokon is fut. A JetBrains, egy prágai székhelyű szoftvercég hozta létre. A Kotlin első bejelentése 2011 júliusában történt, és 2012 februárjában adták ki nyílt forráskódú projektként.\n\nA Google 2017. május 17-én, az I/O konferencián jelentette be, hogy hivatalosan támogatja a Kotlin nyelvet az Android-alkalmazás-fejlesztéshez. Azóta a Kotlin az egyik legnépszerűbb nyelvvé vált az Android fejlesztők körében. A Google 2020 októberi adatai szerint az első 1000 alkalmazás több mint 70%-a a Google Playen Kotlin nyelvet használ. Az Android nemcsak egy operációs rendszer, hanem egy olyan platform is, amely számos funkciót és lehetőséget kínál a felhasználók és a fejlesztők számára. Néhány Android funkció:\n\n- Near Field Communication (NFC), amely lehetővé teszi adatok megosztását, fizetések végrehajtását és más eszközökkel való vezeték nélküli kapcsolatot.\n- Alternatív billentyűzetek, amelyek lehetővé teszik a beviteli módszer testreszabását különböző kiosztásokkal, nyelvekkel és témákkal.\n- Infravörös (IR) átvitel, amellyel a telefonodat távirányítóként használhatod tévékhez, légkondicionálókhoz és más eszközökhöz.\n- Érintés nélküli vezérlés, amely lehetővé teszi műveletek végrehajtását a telefonon a képernyő megérintése nélkül, gesztusok vagy hangparancsok használatával.\n- Automatizálás, amellyel rutint és triggert állíthatsz be, hogy a telefon bizonyos feladatokat automatikusan végrehajtson.\n- Vezeték nélküli alkalmazásletöltések, amelyek lehetővé teszik az alkalmazások telepítését a számítógépről vagy a web böngészőből anélkül, hogy kábellel csatlakoztatnád a telefont.\n- Tárhely- és akkumulátorcsere, amely lehetőséget ad a telefon memóriájának bővítésére vagy az akkumulátor egyszerű cseréjére.\n- Testreszabható kezdőképernyő, amellyel személyre szabhatod a telefon megjelenését widgetekkel, háttérképekkel, ikonokkal és launcherekkel.\n\nAz Android Studio a legjobb eszköz Android alkalmazások fejlesztéséhez. Sok funkciót és előnyt kínál a fejlesztőknek, például:\n\n- Kódszerkesztő szintaxiskiemeléssel, kódkiegészítéssel, refaktoringgal, hibakereséssel, teszteléssel és lint eszközökkel.\n- Layout szerkesztő drag-and-drop felülettel a felhasználói felületek tervezéséhez.\n- Emulátor gyors indítással és pillanatkép támogatással különböző eszközökön és konfigurációkban való teszteléshez.\n- Firebase integráció olyan szolgáltatásokkal, mint hitelesítés, adatbázis, tárhely, analitika, hibajelentés és még sok más. \n- Gradle-alapú build rendszer függőségkezeléssel,\nszemélyre szabással,\noptimalizálással,\n aláírással,\nterjesztési lehetőségekkel és további funkciókkal. \n\nAz Android Studio segítségével lenyűgöző alkalmazásokat készíthetsz Android eszközökre Kotlin használatával,\na modern programozási nyelvvel, amely tömör,\nbiztonságos,\nkifejező,\nés kompatibilis a Java-val. A Chronometer egy speciális widget az Android keretrendszerben, amely időzítő-szerű funkcionalitást biztosít az eltelt idő megjelenítéséhez. Beállítható felfelé vagy lefelé számolásra, és gyakran használják olyan alkalmazásokban, amelyek időmérést igényelnek, például stopper- vagy visszaszámláló alkalmazások. A Chronometer osztály a TextView osztályból származik, ami azt jelenti, hogy örökli a TextView összes tulajdonságát és metódusát. Ez lehetővé teszi a fejlesztők számára, hogy könnyen testre szabják a Chronometer megjelenését, beleértve a szöveg méretét, színét és betűtípusát. Ez egy snackbar. diff --git a/app/src/main/res/values-in-rID/strings.xml b/app/src/main/res/values-in-rID/strings.xml index 09c1ffee..d1db87e0 100644 --- a/app/src/main/res/values-in-rID/strings.xml +++ b/app/src/main/res/values-in-rID/strings.xml @@ -255,7 +255,7 @@ Tab default Label bilah navigasi bawah Berlabel - Terpilih + Terpilih %1$s Tidak berlabel Navigasi Navigasi Bawah diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml index d0935933..8d0fca94 100644 --- a/app/src/main/res/values-it-rIT/strings.xml +++ b/app/src/main/res/values-it-rIT/strings.xml @@ -276,7 +276,7 @@ Scheda predefinita Etichette barra di navigazione inferiore Con etichetta - Selezionato + Selezionato %1$s Senza etichetta Navigazione Navigazione inferiore diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index 49eef0c9..bf9698f8 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -276,7 +276,7 @@ デフォルトタブ ボトムナビゲーションバーのラベル ラベル付き - 選択済み + 選択済み %1$s ラベルなし ナビゲーション ボトムナビゲーション diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index d1311d74..a93334f4 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -229,7 +229,7 @@ 기본 탭 하단 탐색 메뉴 라벨 라벨 표시 - 선택됨 + 선택됨 %1$s 라벨 없음 내비게이션 하단 내비게이션 diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index a00cc70b..ae248311 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -276,7 +276,7 @@ Domyślna karta Etykiety dolnego paska nawigacji Z etykietą - Wybrane + Wybrane %1$s Bez etykiet Nawigacja Dolna nawigacja diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index d8d3272c..8d22ebae 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -229,7 +229,7 @@ Aba padrão Rótulos da barra de navegação inferior Rotulado - Selecionado + Selecionado %1$s Sem rótulo Navegação Navegação inferior diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml index a9352b8b..565d49f8 100644 --- a/app/src/main/res/values-ro-rRO/strings.xml +++ b/app/src/main/res/values-ro-rRO/strings.xml @@ -263,7 +263,7 @@ Filă implicită Etichete bară de navigare inferioară Etichetate - Selectat + Selectat %1$s Neetichetate Navigare Navigare de jos diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml index 01f1fcae..5b79a031 100644 --- a/app/src/main/res/values-ru-rRU/strings.xml +++ b/app/src/main/res/values-ru-rRU/strings.xml @@ -255,7 +255,7 @@ Вкладка по умолчанию Подписи нижней панели навигации С подписями - Выбрано + Выбрано %1$s Без подписей Навигация Нижняя навигация diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml index 33d0356f..391f3857 100644 --- a/app/src/main/res/values-sv-rSE/strings.xml +++ b/app/src/main/res/values-sv-rSE/strings.xml @@ -229,7 +229,7 @@ Standardflik Etiketter i nedre navigeringsfältet Med etikett - Vald + Vald %1$s Utan etikett Navigering Nedre navigering diff --git a/app/src/main/res/values-th-rTH/strings.xml b/app/src/main/res/values-th-rTH/strings.xml index 4a458374..9abb2a93 100644 --- a/app/src/main/res/values-th-rTH/strings.xml +++ b/app/src/main/res/values-th-rTH/strings.xml @@ -231,7 +231,7 @@ แท็บเริ่มต้น ป้ายกำกับแถบนำทางด้านล่าง มีป้ายกำกับ - ที่เลือก + ที่เลือก %1$s ไม่มีป้ายกำกับ การนำทาง แถบนำทางด้านล่าง diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml index 121f6439..482fa075 100644 --- a/app/src/main/res/values-tr-rTR/strings.xml +++ b/app/src/main/res/values-tr-rTR/strings.xml @@ -229,7 +229,7 @@ Varsayılan sekme Alt gezinme çubuğu etiketleri Etiketli - Seçili + Seçili %1$s Etiketsiz Gezinme Alt gezinme diff --git a/app/src/main/res/values-uk-rUA/strings.xml b/app/src/main/res/values-uk-rUA/strings.xml index 9d6b802e..a157a358 100644 --- a/app/src/main/res/values-uk-rUA/strings.xml +++ b/app/src/main/res/values-uk-rUA/strings.xml @@ -229,7 +229,7 @@ Вкладка за замовчуванням Підписи нижньої навігаційної панелі З підписами - Вибрані + Вибрані %1$s Без підписів Навігація Нижня навігація diff --git a/app/src/main/res/values-ur-rPK/strings.xml b/app/src/main/res/values-ur-rPK/strings.xml index b248b5de..c5d37f3b 100644 --- a/app/src/main/res/values-ur-rPK/strings.xml +++ b/app/src/main/res/values-ur-rPK/strings.xml @@ -229,7 +229,7 @@ پہلے سے طے شدہ ٹیب نیچے نیویگیشن بار کے لیبلز لیبل شدہ - منتخب + منتخب %1$s بغیر لیبل کے نیوی گیشن نیچے کی نیوی گیشن diff --git a/app/src/main/res/values-vi-rVN/strings.xml b/app/src/main/res/values-vi-rVN/strings.xml index 72bea251..469f67c5 100644 --- a/app/src/main/res/values-vi-rVN/strings.xml +++ b/app/src/main/res/values-vi-rVN/strings.xml @@ -229,7 +229,7 @@ Tab mặc định Nhãn thanh điều hướng dưới cùng Có nhãn - Đã chọn + Đã chọn %1$s Không có nhãn Điều hướng Thanh điều hướng dưới diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index ead553e1..c39669c7 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -229,7 +229,7 @@ 預設分頁 底部導覽列標籤 有標籤 - 已選取 + 已選取 %1$s 無標籤 導覽 底部導覽列 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a0d61128..26e0033b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -255,7 +255,7 @@ Default tab Bottom navigation bar labels Labeled - Selected + Selected %1$s Unlabeled Navigation Bottom navigation diff --git a/app/src/test/java/com/d4rk/androidtutorials/java/data/repository/DefaultHomeRepositoryTest.java b/app/src/test/java/com/d4rk/androidtutorials/java/data/repository/DefaultHomeRepositoryTest.java index cf488df9..ae53a26e 100644 --- a/app/src/test/java/com/d4rk/androidtutorials/java/data/repository/DefaultHomeRepositoryTest.java +++ b/app/src/test/java/com/d4rk/androidtutorials/java/data/repository/DefaultHomeRepositoryTest.java @@ -10,6 +10,7 @@ import org.junit.Test; import java.util.List; +import java.util.concurrent.atomic.AtomicReference; public class DefaultHomeRepositoryTest { @@ -57,9 +58,9 @@ public void repositoryDelegatesToDataSources() { assertEquals("play/pkg", repository.getAppPlayStoreUrl("pkg")); assertEquals("tip", repository.getDailyTip()); - final List[] result = new List[1]; // FIXME: Unchecked assignment: 'java.util.List[]' to 'java.util.List[]' - repository.fetchPromotedApps(apps -> result[0] = apps); + AtomicReference> result = new AtomicReference<>(); + repository.fetchPromotedApps(result::set); assertTrue(remote.called); - assertEquals(promoted, result[0]); + assertEquals(promoted, result.get()); } }