Práce s texty v Androidu - zizanek/-github-tz-pma-2026-priprava GitHub Wiki

Práce s texty v Androidu: Proč nepoužívat Hardcoded Strings

Při psaní XML layoutů se u textových atributů (android:text="...") velmi často zobrazuje žluté varování:

Hardcoded string "Jaké kolo chcete objednat?", should use `@string` resource

1. Co toto varování znamená

Pojem „Hardcoded string“ (natvrdo vepsaný textový řetězec) označuje situaci, kdy je text určený pro uživatele zapsán přímo do XML šablony layoutu namísto toho, aby byl uložen v dedikovaném konfiguračním souboru.

Vývojové prostředí Android Studio tímto způsobem upozorňuje, že je porušována doporučená architektura oddělení dat a vizuální prezentace.


2. Rychlé vyřešení: Klávesová zkratka

Android Studio umožňuje tento problém vyřešit automaticky bez nutnosti manuálního přepisování souborů:

  1. Textový kurzor se umístí na podtržený text (nebo do žlutě zvýrazněného řádku).
  2. Stiskne se klávesová kombinace:
    • Alt + Shift + Enter (okamžitá aplikace doporučené opravy / Quick Fix)
    • případně Alt + Enter (otevře nabídku akcí, kde se zvolí volba Extract string resource).
  3. V dialogovém okně se potvrdí nebo upraví název klíče (tzv. Resource name, např. order_bike_question):
    • Pro název klíče je doporučeno používat malá písmena bez diakritiky a podtržítka (snake_case).
  4. Po stisku klávesy Enter se provede:
    • Uložení textu do souboru res/values/strings.xml.
    • Nahrazení původního textu v XML layoutu za odkaz ve tvaru @string/order_bike_question.

3. Hlavní důvody, proč nepoužívat texty „natvrdo“

Ačkoliv aplikace funguje a lze ji spustit i s tímto varováním, ukládání textů do @string přináší zásadní výhody:

A. Jednoduchá lokalizace (vícejazyčnost aplikace)

Jedná se o nejvýznamnější důvod. Pokud jsou texty uloženy v souboru res/values/strings.xml, přidání dalšího jazyka (např. angličtiny) nevyžaduje žádné zásahy do kódu ani layoutů:

  • Vytvoří se pouze nový lokalizovaný soubor res/values-en/strings.xml.
  • Android sám podle nastavení jazyka v telefonu uživatele vybere správný překlad.
  • Pokud by byly texty vepsány přímo v layoutu, podpora více jazyků by byla prakticky nemožná.

B. Znovupoužitelnost textů (DRY princip – Don't Repeat Yourself)

Slova jako „Uložit“, „Zrušit“, „Chyba“ nebo název aplikace se v projektu vyskytují na desítkách míst.

  • Pokud je text uložen jako @string/btn_save, je definován pouze jednou.
  • Při požadavku na změnu formulace (např. ze „Zrušit“ na „Zpět“) se provede úprava na jediném řádku v souboru strings.xml a změna se promítne napříč celou aplikací.

C. Čistota a udržovatelnost kódu

Oddělením textové vrstvy od struktury layoutu zůstává XML čisté. Layout řeší výhradně rozměry, barvy a pozicování prvků, zatímco veškerý textový obsah je centralizován na jednom místě. Překladatel nebo copywriter tak může upravovat texty, aniž by musel otevírat soubory se strukturou zobrazení.