我正在放置一個小的android庫供其他開發者在他們的android應用程序中使用。第三方開發者將添加我的自定義按鈕,例如「com.example.myLibrary.CustomButton」到它們的xml視圖中。 開發人員可以根據需要放置儘可能多的這些按鈕。從android中的活動返回組件ID的列表?
有沒有一種方法可以讓我的庫代碼識別活動中有多少個自定義按鈕,然後返回它們的ID,這些ID可以是應用程序開發人員設置的任何內容?
我已經嘗試過int[] i = getResources().getIdentifier("name","component","package");
,但它返回一個6位數的int,我假設它是組件的一些系統標識符而不是它的每個實例。
注意 - 我知道圖書館將需要通過類似new MyLibrary(context);
的應用程序活動的上下文來傳遞應用程序活動的上下文。我已經爲圖書館的其他方面實施了這項工作,所以這似乎不成問題。
很多感謝的任何建議,可以與問題
尼克迭代。非常感謝澄清,我收到的整數是一個系統級別的整數的ID和如何獲得在視圖組件 - 但這樣做,如果我不知道'整數ID'或'@ + ID/idName',如果你知道我的意思。開發人員將添加自定義組件x次併爲其添加任何ID名稱。只是一個想法,但也許有更好的方式去做這件事?也許庫應該以編程方式將ID分配給自定義按鈕的每個實例?歡呼聲 – ConorBeckett
Nick。它和我一起分享了你正在做的事情,並且我的解決方案能夠發揮作用!我只需要將父活動上下文添加到您的ViewGroup viewGroup =(ViewGroup)activityContext.getWindow()。getDecorView();'行,然後我就可以爲特定的UI組件生成ID整數的ArrayList。非常感謝! – ConorBeckett
太棒了!很高興你理順了。我會編輯我的答案來反映這一點。如果你從一個活動內而不是一個片段調用這個方法,你總是可以使用'this'作爲活動的關鍵字(如果你還不知道的話)。我不明白你的第一個關於編程分配ID的問題?我試圖在編程之前指定ID,並且API 17添加了一個'generateViewID()'方法,以確保您獲得唯一的一個,如果這是您要求的。 – Nick