簡體   English   中英

在文本文件中指定java.lang.Class名稱?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM