Java/安卓 : Return a class name through a method

标签 java android class inheritance

我正在尝试创建一个基类 fragmentstatepageradapter,我希望 getItem 方法返回一个新的 fragment 实例,但我希望该 fragment 是任何可能的子类型。我认为它会是这样的,但它抛出了一个错误:

@Override
public Fragment getItem( int position ) {

    if( mRosterUids == null || mRosterUids.size() <= position )
        return null;
    Log.e( "RosterDetailsPagerAdapter", "getItem(): " + mRosterUids.get(position) );
    return getItemClass().newInstance(mRosterUids.get(position));
}

public java.lang.Class<SLRosterDetailsFragment> getItemClass() {
    return SLRosterDetailsFragment.class;
}

错误消息来自 newInstance 内部的 mRosterUids.get(position),它说

“类中的 newInstance() 不能应用于 (java.lang.String)”

不太灵活的工作版本是:

@Override
public Fragment getItem( int position ) {

    if( mRosterUids == null || mRosterUids.size() <= position )
        return null;
    Log.e( "RosterDetailsPagerAdapter", "getItem(): " + mRosterUids.get(position) );
    return SLRosterDetailsFragment.newInstance(mRosterUids.get(position));
}

这是否可能开始工作,或者我应该让我的子函数覆盖 getItem 以返回它们自己的 fragment 。

最佳答案

将您的 getItemClass() 更改为

public <T extends Object> T getItemClass() {
    return SLRosterDetailsFragment.class;
}

关于Java/安卓 : Return a class name through a method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23682179/

相关文章:

java - 在 JSF 应用程序中针对不同环境使用区域设置变体

for循环中的Java特定字符

java - Android 通过套接字发送图像,但在服务器端始终接收到空

android - Session.StatusCallback 无法解析为类型 - Facebook API

android - 使用opengles拥有透明背景

php - php中多重继承的最佳方式是什么?

Java Comparator reversed() 方法有奇怪的结果

java - "import au.com.bytecode.opencsv.CSVReader"错误

java - 寻求 Java 代码架构方面的帮助

javascript - 从异步调用访问成员方法