【问题标题】:Passing a class and calling a method on it传递一个类并在其上调用一个方法
【发布时间】:2016-10-30 20:04:40
【问题描述】:

考虑一个扩展 Fragment 的类,称为 MyFragmentClass,它实现了 newInstance(args)

我想做的是为任何扩展 MyFragmentClass 的东西做一个吸气剂,这样我就可以通过 newInstance(args) 做一个新的片段。比如:

<T extends MyFragmentClass> Class<T> getMyFragmentClass() {
    return SomeClassExtendingMyFragmentClass.class;
}

然后

public void makeNewFragment() {
    MyFragmentClass fragment = getMyFragmentClass().somehowCallNewInstance(args);
}

但是我遇到了一些困难,因为我不能真正将它传递给new MyFragmentClass(),因为这违背了使用newInstance(args) 的目的,如果我想要的参数在我不能提前打电话给newInstance(args)调用get() 的类。

我尝试将.class 传回,但我只能在其上调用newInstance()(无参数)。

有解决办法吗?

【问题讨论】:

    标签: java android class android-fragments instantiation


    【解决方案1】:

    据我了解,您需要使用结构方法从派生类创建实例。定义“抽象”方法并在派生类中覆盖它。 对于 Activity 和 Fragment 之间的通信,请考虑使用带有粘性事件的 EventBus。

    【讨论】:

    • 我的问题不在于类之间的通信——而是从子类获取正确的类,然后在父类中对其调用 newInstance(args)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 2010-12-21
    相关资源
    最近更新 更多