1

ナビゲーション バーで特定のタブが選択されているかどうかを判断できません。成分タブが選択されているかどうかを判断しようとしています。コードを実行するたびに、mFragment が null でインスタンス化されていないため、null ポインター エラーが返されます。

わかりました... mFragment が null であることは理解しています。これは私が混乱しているところだと思います。フラグメントを比較するとき、それらのコンテンツまたはオブジェクト自体を比較していますか? そして、誰かがフラグメントを比較する方法を知っていれば、それは素晴らしいことです. 前もって感謝します。コードは次のとおりです。

public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
    private final Activity mActivity;
    private final String mTag;
    private final Class<T> mClass;
    private final Bundle mArgs;
    private Bundle mTitleArgs;
    private Fragment mFragment;
    private IngredientCreation ingredientFrag;
    private FragmentTabControl controller;

    public TabListener(Activity activity, String tag, Class<T> clz) {
        this(activity, tag, clz, null);
    }

    public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) {
        mActivity = activity;
        mTag = tag;
        mClass = clz;
        mArgs = args;

        // Check to see if we already have a fragment for this tab, probably
        // from a previously saved state.  If so, deactivate it, because our
        // initial state is that a tab isn't shown.
        mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag);
        if (mFragment != null && !mFragment.isDetached()) {
            FragmentTransaction ft = mActivity.getFragmentManager().beginTransaction();
            ft.detach(mFragment);
            ft.commit();
        }
    }

    public void onTabSelected(Tab tab, FragmentTransaction ft) {
        ingredientFrag = (IngredientCreation) mActivity.getFragmentManager().findFragmentByTag("ingredients");

        if (mFragment.equals(ingredientFrag)) {

            System.out.println("got here");
            mFragment = Fragment.instantiate(mActivity, mClass.getName(), mTitleArgs);
            ft.add(android.R.id.content, mFragment, mTag);
        } else {
            ft.attach(mFragment);
        }
    }
4

1 に答える 1

0

ActionBar のドキュメントには、タブ リスナーを適切に作成する方法の良い例があります。適切な実装については、このリンクを確認してください。http://developer.android.com/guide/topics/ui/actionbar.html

于 2012-09-13T07:02:20.613 に答える