2016-05-09 3 views
0

フラグメントを拡張するクラス名を渡すユーティリティクラスを作成しています。メソッド宣言ではフラグメントメソッドは使用できません。 フラグメントタグを返すコードスニペット。genricクラスをフラグメントとして渡します。

private String createFragmentTag(Class<? extends Fragment> aClass, boolean addArgs) { 
     StringBuilder stringBuilder = new StringBuilder(); 
     stringBuilder.append(aClass.getClass().getSimpleName()); 
     if(addArgs) { 
      stringBuilder.append("-"); 
      **//here get argument is not calling** 
      if (aClass.getArguments() != null) 
       stringBuilder.append(aClass.getArguments().toString()); 
     } 
     return stringBuilder.toString(); 
    } 
+0

もちろん、 'Class'オブジェクトに対して' getArguments() 'を呼び出すことはできません。 'Class'クラスにはそのようなメソッドはありません。 'Fragment'の実際のインスタンスをメソッドに渡して' getArguments() 'を呼び出す必要があります。ありがとうございました。 –

+0

わかった。私は他の方法でそれを行うでしょう –

+0

だから?それはどうやってそれを不可能にするのですか?あなたがしようとしていることは不可能で、私が示唆しているのはそうではありません。 –

答えて

1
private String createFragmentTag(Fragment fragment, boolean addArgs) { 
    StringBuilder stringBuilder = new StringBuilder(); 
    stringBuilder.append(fragment.getClass().getSimpleName()); 
    if(addArgs) { 
     stringBuilder.append("-"); 
     **//here get argument is not calling** 
     if (fragment.getArguments() != null) 
      stringBuilder.append(fragment.getArguments().toString()); 
    } 
    return stringBuilder.toString(); 
} 

働くだろう。同様に、コメントに記載されているように、aClassはまだ表現しているクラスをインスタンス化していないため、メソッドがありません。実際にインスタンス化されたFragmentクラスをパラメータとして渡すと、そのフラグメントの一意の文字列タグを生成するという実際の目標を達成できます。

+0

ありがとうございます。それは働いており、私はそれで終わっています。 –

関連する問題