2016-04-21 10 views
-2

私はいくつかのカードを構築するライブラリを使用しています、私のJavaはライブラリクラスを拡張しています。私はJavaクラスでFragmentManagerを使用する必要があります。あなたはFragment参照している場合activity.getFragmentManager()アクティビティを拡張せずにフラグメントマネージャをフェッチする方法

:あなたはActivity参照を持っている場合は

+2

コンストラクタまたはメソッドのいずれかのパラメータとして外部依存として受け入れることができます。 – ootinii

答えて

0

fragment.getFragmentManager()

を彼らは両方のpublic方法ですが、あなたは、アクティビティまたはフラグメントのいずれかへの参照が必要になります。また

、そしてあなたがView参照を持っている場合、私は、それをお勧めしませんが、あなたがアップキャストとFragmentManagerその方法を取得することができるかもしれないので、view.getContext()方法はそうは、Activityになります。しかし、これは潜在的に危険であり、Androidの実装が変更された場合はいつでも動作を停止する可能性があるため、実際に自分が行っていることを知る必要があります。アクティビティ/フラグメント参照を渡すことは、実際には行かなくてはなりません。

+0

以下のコードを貼り付けます。public class CustomExpandCard extends CardExpand { String text1; public CustomExpandCard(コンテキストコンテキスト、文字列text1、文字列text2、文字列text3、文字列text4){ super(context、R.layout.carddemo_example_inner_expand); this.text1 = text1; } }内部クラスを作成してコンテキストを渡す必要がありますか。実際に私はアンドロイドに新しいですが、それは多くの助けになるいくつかのサンプルコードを教えてくれますか? –

0

getFragmentManager()は、publicnon-staticの方法はActivityです。したがって、FragmentManagerを取得するには、activitycontextが必要です。たとえあなたがactivityクラスを拡張していなくても、あなたはそのcontextを持っている必要があります。

また、このメソッドの説明を見ると、それがクリアされます。

このアクティビティに関連付けられたフラグメントと対話するためのFragmentManagerを返します。

/** 
* Return the FragmentManager for interacting with fragments associated 
* with this activity. 
*/ 
public FragmentManager getFragmentManager() { 
    return mFragments.getFragmentManager(); 
} 

のでactivityせず、FragmentMangerは存在しません。

関連する問題