[英]Specify a java.lang.Class name in a text file?
我們開始了一個非正式的Android開發小組的工作。 我們每個人都將半獨立活動添加到單個應用程序。 昨日周游時,我想出的最好的辦法是使我們的主要活動成為GridView,並允許開發人員通過硬編碼的數組“行動項目':
private final ActionItem[] actionItems = {
new ActionItem(R.drawable.dms_to_dd, "DMS to/from DD", DegreeConverter.class)
};
其中的ActionItem就是這樣:
public class ActionItem {
private int drawingID;
private String label;
private java.lang.Class<?> activity;
public ActionItem(int drawingID, String label, Class<?> activity) {
this.drawingID = drawingID;
this.label = label;
this.activity = activity;
}
public int getDrawingID() {
return drawingID;
}
public String getLabel() {
return label;
}
public Class<?> getActivity() {
return activity;
}
}
為了使人們開始使用,我創建了第一個簡單的Activity / ActionItem,並按上面所示進行了注冊。
我們希望可繪制對象位於GridView中用於圖像的位置,並且希望用於標簽的字符串存在,最重要的是,當選擇了相應的GridView項目時,將通過Intent啟動的類。
所有這些工作。 但是,如果人們不必編輯主活動即可完成此工作,那就太好了。 我希望我們可以在填充GridView之前從文本文件中讀取相同的信息(對於ActionItem)。 drawable id和String沒問題。 因此,主要問題是:我們如何在文本文件中指定該類?
是否可以通過名稱(String / char [])創建java.lang.Class實例? 有沒有更好的方法可以完成上述操作?
樂於提供進一步的詳細信息(如果有幫助)。
您是否嘗試過:
Class.forName("com.something.MyClass")
http://developer.android.com/reference/java/lang/Class.html#forName(java.lang.String )
您可以從文件中讀取名稱,並在forName方法中設置字符串。
因此,您可以執行以下操作:
public ActionItem(int drawingID, String label, String activityClassName) {
this.drawingID = drawingID;
this.label = label;
this.activity = Class.forName(activityClassName);
}
使用反射,下面是一個示例:
Class theClass = Class.forName("YourClass");
YourClass instancevariable = (YourClass)theClass.newInstance();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.