2016-10-30 5 views
0

FragmentというMyFragmentClassという拡張クラスが実装されており、これにはnewInstance(args)が実装されているとします。クラスを渡してメソッドを呼び出す

私がしたいことは、newInstance(args)で新しいフラグメントを作ることができるように、MyFragmentClassを拡張するもののゲッタを作ることです。ような何か:

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

、その後

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

これはnewInstance(args)を使用しての目的に反して、私はできないと私は本当にそれをnew MyFragmentClass()を渡すことはできませんので、私は、いくつかの困難を持っていますが先にnewInstance(args)を呼び出すのは、私が望むargsがget()呼び出しを呼び出すクラスにある場合です。

私は.classを返信しようとしましたが、それにはnewInstance()(argsなし)しかコールできませんでした。

回避策はありますか?

答えて

1

私が理解したように、派生クラスからインスタンスを作成するにはファブリックメソッドが必要です。 '抽象'メソッドを定義し、それを派生クラスでオーバーライドします。 アクティビティーとフラグメント間の通信には、スティッキー・イベントでEventBusを使用することを検討してください。

+0

私の問題は、クラス間の通信ではなく、正しいクラスを子から取得して親のnewInstance(args)を呼び出すことです。 – user7085962

関連する問題