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

在文本文件中指定java.lang.Class名称?,java,android,class,file-io,collaboration,Java,Android,Class,File Io,Collaboration,我们在工作中成立了一个非正式的Android开发小组。我们每个人都将在一个应用程序中添加半独立的活动。在昨天的闲逛中,我能想到的最好办法就是让我们的主要活动成为GridView,并允许开发人员通过硬编码的“ActionItems”数组中的元素在主要活动中“注册”他们的活动: private final ActionItem[] actionItems = { new ActionItem(R.drawable.dms_to_dd, "DMS to/from DD", De

我们在工作中成立了一个非正式的Android开发小组。我们每个人都将在一个应用程序中添加半独立的活动。在昨天的闲逛中,我能想到的最好办法就是让我们的主要活动成为GridView,并允许开发人员通过硬编码的“ActionItems”数组中的元素在主要活动中“注册”他们的活动:

    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;
    }   
}
公共类ActionItem{
私有int drawingID;
私有字符串标签;
私有java.lang.Class活动;
公共ActionItem(int-drawingID、字符串标签、类活动){
this.drawingID=drawingID;
this.label=标签;
这个。活动=活动;
}
public int getDrawingID(){
返回drawingID;
}
公共字符串getLabel(){
退货标签;
}
公共类getActivity(){
返回活动;
}   
}
为了让人们开始,我创建了第一个简单的Activity/ActionItem,并如上所示进行了注册

我们希望drawable能够出现在GridView中的图像和用于标记的字符串中,最重要的是,当选择相应的GridView项时,将通过Intent启动的类

所有这些都有效。然而,如果人们不必编辑主要活动来实现这一点,那就太好了。我希望在填充GridView之前,我们可以从文本文件中读取相同的信息(对于ActionItem)。可绘制id和字符串没有问题。那么主要的问题是:我们如何在文本文件中指定该类

是否有方法从名称(String/char[])创建java.lang.Class实例? 有没有更好的方法来做我上面描述的事情

如果有帮助,欢迎提供更多详细信息。

您是否尝试过:

  Class.forName("com.something.MyClass")
)

您可以从文件中读取名称,并在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();

查看
java.lang.Class
forName
方法。感谢您的评论。下面的答案提供了同样的信息。我想这正是我需要的。我几乎可以肯定这就是我需要的。谢谢