我想问一个关于在 Android 中存储导航结构远离 java 代码的正确方法的问题。我想将应用程序结构存储在资源中的 xml 文件中。该程序仅适用于生成的列表。
以前我将自己的 XML 解析到列表中。每个项目的 id 使用调用方法运行适当的代码。但是,它不是太快且对程序员友好。
所以我决定使用一种enum
类型。这并不能消除在 XML 中输入错误值的可能性,但它消除了在代码本身中出现拼写错误的可能性。每个元素调用一个方法(带有 switch-case),检查按下的是什么类型的项目,如果它是枚举,APP_ITEM
则根据 id 运行适当的程序(XML 中的另一个魔术字符串)。
示例应用程序结构:
"Main screen"
- Item that runs dialer
- Second item that carries to subscreen
- Item one
- Item two
"Second screen"
- Item that runs browser
- Awesome meter
以 XML 呈现:
<app_navigation>
<screen name="Main screen">
<item enum="APP_ITEM" id="dialer" name="Item that runs dialer"></item>
<item name="Second item that carries to subscreen">
<screen name="Some subscreen">
<item enum="SOME_ITEM" name="Item one"></item>
<item enum="SOME_ITEM" name="Item two"></item>
</screen>
</item>
</screen>
<screen name="Second screen">
<item enum="APP_ITEM" id="browser" name="Item that runs browser"></item>
<item enum="SOME_ITEM" name="Awesome meter"></item>
</screen>
</app_navigation>
有没有更好的方法将导航结构与代码分开?我想支持 API 8 的应用程序。