8

Android プロジェクトの 1 つに取り組んでおり、アクティビティ内のコードを減らそうとしています。そのうちの 1 つに、クリックすると DialogFrament を開く CustomView (LinearLayout を拡張するだけ) があります。これを実装する方法はonTouch()、アクティビティでオーバーライドし、続いてそこから DialogFrament を開くことです。次のようになります。

@Override
public boolean onTouch(View v, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_UP) {
        if (v.getId() == mCustomView.Id()) {
            mDialogFragment.show(mFragmentManager, "");

DialogFragment を開くプロセスをアクティビティから CustomView 自体に移動したいのですが、CustomView で (を使用してgetSupportFragmentManager()) FragmentManager のインスタンスを取得できないという問題があります。私が計画していることは可能ですか、それとも私が取り組んでいるコードに固執する必要がありますか? これを行っているのは、コードがよりクリーンで理解しやすくなるようにするためです。

4

1 に答える 1

16

カスタムビューでgetContext()(これがアクティビティになります)呼び出すことができるので、そこにキャストしてそこからandroid.support.v4.app.FragmentActivity呼び出すことができますgetSupportFragmentManager()

したがって、これでうまくいくはずです。

android.support.v4.app.FragmentActivity fragmentActivity = (android.support.v4.app.FragmentActivity) getContext();
FragmentManager fm = fragmentActivity.getSupportFragmentManager();
于 2013-08-05T15:42:44.803 に答える