1

FragmentActivity を拡張しないクラスから Fragment を起動する必要がある Android アプリケーションを開発しています。サポート v4 パッケージを使用しています。現在のクラスでコンテキストを取得します。現在のコンテキストから FragmentManager オブジェクトを作成する方法を教えてくれる人はいますか?

public ToolBarGenerator(Context c)
{
      context = c;
}

FragmentManager fm = (FragmentActivity)context.getSupportFragmentManager(); //getting error at this line.
//Called like the above
new ToolBarGenerator(getActivity())
4

2 に答える 2

4

Contextが からのものである場合FragmentActivityは、 にキャストできますが、それがFragmentActivityあなたの場合かどうかはわかりません。

そうは言っても、あなたがしていることは悪い習慣のようです。すべての Fragment トランザクションをFragmentActivityクラス内に保持します。別のクラスが別の表示を要求する必要があるFragment場合は、コールバックなどを使用する必要があります。

于 2012-06-12T18:45:34.900 に答える
1

別のスレッドでこれに答えただけですが、これは他の人に役立つかもしれません。私はおそらくあなたと似たような状況にあり、アダプター内の ()にアクセスする必要があるときに、クラスAdapterとは別のクラスを回避する方法について正確な答えがありませんでした。FragmentActivitygetSupportFragmentManager

FragmentActivity のキャストが許可されていないため、コンテキストを渡すことはできませんでした (理由はまだわかりません)。

しかし、私はあきらめて、マネージャー自体へのアクセスを保存し、直接呼び出しました。

public ViewPagerAdapter(Context context, FragmentManager fm, Fragment f) {
    super(fm);  
    _fm = fm; // declared in the class "private FragmentManager _fm;"
    _context=context;       
}
于 2012-12-17T17:49:44.657 に答える