23

リストビューから詳細ビューに移動したいので、OnClickListenerリストで次を使用します。

@Override
public void onClick(View view)
{
    Bet bet = (Bet)view.getTag();
    FragmentManager fm = getActivity().getSupportFragmentManager();
    BetDetailFragment f = BetDetailFragment.create(bet);
    String tag = f.getClass().getName();

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        setSharedElementReturnTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.move));
        f.setSharedElementEnterTransition(TransitionInflater.from(getActivity()).inflateTransition(android.R.transition.move));
    }

    FragmentTransaction ft = fm.beginTransaction()
            .replace(R.id.frame_container, f, tag)
            .addToBackStack(tag);

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
    {
        L.d(this, "TRANS: " + TransitionUtil.getTransitionNameBetLogo1(bet) + "|" + view.findViewById(R.id.ivLogo1));
        L.d(this, "TRANS: " + TransitionUtil.getTransitionNameBetLogo2(bet) + "|" + view.findViewById(R.id.ivLogo2));
        ft.addSharedElement(view.findViewById(R.id.ivLogo1), "1");//TransitionUtil.getTransitionNameBetLogo1(bet));
        ft.addSharedElement(view.findViewById(R.id.ivLogo2), "2");//TransitionUtil.getTransitionNameBetLogo2(bet));
    }
    ft.commit();
}

私の関数は一意の名前を返します。2 つの異なるビューがありますが、それでも機能しません。私はすでに不要な関数をコメントアウトし、そこにいくつかの一意のトランザクション名を手動で書きました...しかし、それでも、最初の行でこの例外が発生しますaddSharedElement:

java.lang.IllegalArgumentException: Unique transitionNames are required for all sharedElements
        at android.support.v4.app.BackStackRecord.addSharedElement

編集

共有要素がなければ、すべてが完全に正常に機能します...

4

5 に答える 5

0

あなたonClickListenerが親Activityではなくフラグメントの一部である場合、ここで間違ったことをしています。フラグメントは親アクティビティに必要なものを通知する必要があり、Activty はそれを処理する必要があります (つまり、フラグメントを置き換えるなど)。Fragment は、単独でこれを行うべきではありません。また、詳細ビューからリストに移動するだけでよい場合は、そのリストから詳細ビューに入ったと仮定します。その場合、最後の要素 (フラグメント ビュー フラグメント) をバック スタックからポップするだけです。参照: https://developer.android.com/reference/android/app/FragmentManager.html

于 2015-06-15T14:53:07.997 に答える