49

新しいViewクラスを作りました。そのクラス内で にアクセスする必要がありますが、そのFragmentManager方法がわかりません。

FragmentManagerコンテキストからにアクセスできますか?

CustomView extends LinearLayout
4

5 に答える 5

61

指定された Context が Activity (ハニカム後) または FragmentActivity (ハニカム前) を拡張する場合のみ。

その場合、リフレクションまたは try-catch を使用したアクティビティであることを 100% 確認する必要があります。

try{
  final Activity activity = (Activity) context;

  // Return the fragment manager
  return activity.getFragmentManager();

  // If using the Support lib.
  // return activity.getSupportFragmentManager(); 

} catch (ClassCastException e) {
  Log.d(TAG, "Can't get the fragment manager with this");
}

リファクタリングをお勧めすると思ったので、 aViewは実際にはものを表示するためのものであり、実際にアプリの状態を変更するべきではありませんが、それは私の意見です。

于 2012-05-21T18:14:31.937 に答える
48

サポート フラグメントを使用している場合、おそらく実際には次のことが必要になります。

try {
  FragmentManager fragmentManager = ((FragmentActivity) context).getSupportFragmentManager();
} catch (ClassCastException e) {
  Log.e(TAG, "Can't get fragment manager");
}
于 2014-07-23T16:19:07.173 に答える
7

これは私のために働いたものです:

Context mContext;
...


//Get FragmentManager
FragmentManager fragmentManager = ((Activity) mContext).getFragmentManager();

(もちろん、最初に mContext を初期化する必要があります)

于 2015-08-25T20:37:19.320 に答える