2014-10-03 71 views
0

我工作在Android的一個小注釋處理器。獲取XML佈局的ID

我有以下場景: 我有一個xml佈局資源ID,我想查找此xml佈局中的所有視圖。我只是想分析xml佈局文件來檢索稍後將用到的一些信息。

有沒有人知道這樣的工具是否存在或如何實現這樣的事情?

我知道這並不簡單。有藪事情要考慮,如:在不同的佈局資源文件夾

  1. 相同的佈局文件,如:

    • RES /佈局/ mylayout.xml
    • RES /佈局XLARGE/mylayout。 xml

    我想解析兩個mylayout.xml文件。

  2. 我只有一個佈局的資源ID(整數),我怎麼是映射回XML文件(字符串名稱)

任何建議如何開始?

我懷疑我可以使用Android類,因爲我想寫一個註釋處理器。 AnnotationProcessing在編譯Android資源之前運行在它自己的jvm中。

從我所理解的工作流程應該如下:

  1. 地圖ID佈局的文件名(字符串)(整數)。我想我必須 解析R.java類來實現這一點。
  2. 接下來我要檢查 所有佈局資源文件夾以找到相應的 layout.xml文件。
  3. 解析XML文件(沒什麼大不了)
+0

你有沒有嘗試簡單的XML解析?只是好奇!我想它應該工作? – 2014-10-03 12:05:45

+0

是的,那正是我想要做的。我更新了我的問題。 – sockeqwe 2014-10-03 12:12:04

+0

http://developer.android.com/reference/org/xml/sax/XMLReader.html或http://developer.android.com/reference/javax/xml/parsers/SAXParser.html(不確定薩克斯)或http://developer.android.com/reference/org/xmlpull/v1/XmlPullParser.html(PullParser) – 2014-10-03 12:19:39

回答

0

,如果你需要一個對應於特定ID的資源的名稱,你可以使用

String getResourceEntryName(int id) 

那就是Resources()的方法。 Here你可以找到文檔

+0

這是一個很好的起點,但我懷疑我可以使用Android類,因爲我想編寫一個Annotation Processor。 AnnotationProcessing在編譯Android之前運行在它自己的jvm中。 – sockeqwe 2014-10-03 12:02:53

+0

好的...但你仍然有R.java類或沒有? – Blackbelt 2014-10-03 12:03:57

+0

我想是的。我不確定在開始編譯之前是否會生成R.java,但我認爲每次保存文件(在Android Studio中)都會生成R.java。所以我想我必須「解析」R.java獲取名稱(我更新了我的問題以說明簡單的工作流程)。任何更好的方法是受歡迎的 – sockeqwe 2014-10-03 12:14:46