从字符串实例化一个片段?

3

我希望让用户配置一个ViewPager。目前,我将一个类保存为字符串在一个数组中。

EditableListItem fragment = new EditableListItem(R.string.dialer, Dialer.class.toString(), this);

我希望能够获取类名并将其作为字符串添加到viewpager中。伪代码如下所示:
String s = fragment.getClass();
Fragment f = new Fragment.fromString(s);
mPagerAdapter.addFragment(f);

这该怎么做呢?
1个回答

2
String fragmentName = "fragment"
Fragment fragment = null;

try {
    Class<?> fragmentClass = Class.forName(fragmentName);
    fragment = (Fragment)fragmentClass.newInstance();                                           
} catch(ClassNotFoundException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
} catch (java.lang.InstantiationException e) {
    e.printStackTrace();
} 

mPagerAdapter.addFragment(fragment)

你可以像这样从字符串实例化一个类。
如果你支持API 11及以上版本,或者可能使用支持库(不确定),则可以使用以下方法: Fragment.instantiate

谢谢,这个完美地解决了问题。但是我注意到Dialer.class.toString()返回的是“class com.example...”,因此会出现错误。你知道如何获取不带“class”一词的类吗?(如果不知道,我可以使用substring) - lisovaccaro
刚刚检查了一下,你可以使用class.getName()来获取类名,而不需要使用'class'关键字。 - Lauw
抛出类未找到异常。 - Savita Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接