# Android Legacy Navigation

> Implement Jetpack Navigation Component with XML graphs and SafeArgs for type-safe fragment navigation. Use when working with XML-based navigation or SafeArgs in legacy Android projects; defer drawer and other UI-chrome work to UI skills.

- Skill: `hoangnguyen0403/android-legacy-navigation` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add hoangnguyen0403/android-legacy-navigation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoangnguyen0403/android-legacy-navigation/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: HoangNguyen0403 (https://skillmd.com/u/hoangnguyen0403)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/hoangnguyen0403/android-legacy-navigation

---

# Android Legacy Navigation Standards

## **Priority: P1 (HIGH)**

## 1. Set Up Single-Activity Architecture

- Use one Host Activity with `NavHostFragment`.
- Enable SafeArgs plugin — MANDATORY for passing data between fragments.

See [XML graph & SafeArgs examples](references/implementation.md) for NavHostFragment setup.

## 2. Manage Navigation Graphs

- **Nested Graphs**: Modularize `navigation/` resources (e.g., `nav_auth.xml`, `nav_main.xml`) to keep graphs readable.
- **Deep Links**: Define explicit `<deepLink>` in graph, not AndroidManifest intent filters.

## 3. Navigate with SafeArgs

See [XML graph & SafeArgs examples](references/implementation.md) for type-safe navigation usage.

## Anti-Patterns

- **No Raw String Bundle Keys**: Use SafeArgs generated type-safe classes.
- **No Manual Fragment commit()**: Use NavController for all navigation.

## References

- [XML Graph & SafeArgs](references/implementation.md)

