0

アプリケーションのカスタムメニューを作成する必要があったため、アプリの下部にアクションバーのように機能するフラグメントを作成しました。

しかし、スタックとの競合がいくつかあります(戻るボタンを押したとき)。

次の方法をどのようにプログラムすればよいですか?

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack)
{
    if(R.id.frameContent != frag.getId()) 
// * if the current displaying
// fragment in the layout is the same as the one that I received in param#2 (frag),   
// then don't do anything.
    {
        ft = fragmentManager.beginTransaction();

        ft.replace(frameLayout, frag);
        if(ajouterAuStack)
            ft.addToBackStack(null);

        ft.commit();
    }
}

私の「if」は今のところ意味がないことを知っています。目的の結果を得る方法を見つけようとしています:(今、フラグメントに一度アクセスすると(そしてスタックにプッシュされると)、を使用して再アクセスすることはできません。スタックをクリーンアップするために戻るボタンを数回押すまで、「自家製アクションバー」のボタン。

メニューの同じボタンを数回クリックした場合にのみ、スタック内のアイテムを複製したくない...

みんなありがとう!

4

2 に答える 2

0

質問をよく理解したい。

アクション バーのように機能するフラグメントがあります。フラグメントが既に表示されている場合は、何もする必要はありません。それ以外の場合は、それを表示します。どのような状況で戻りたいと思いますか? また、どうすればよいですか?

注として、下部にある 1 つのアクションバーは、典型的な Android のデザインには適合しません。ユーザーがアプリの使い方を理解していない可能性があります。通常の ActionBar が機能しない理由を知りたいです。

于 2013-03-12T00:36:13.437 に答える
0

将来の参考のために、私はそれをそのように機能させました:

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack, String tag)
{
    ft = fragmentManager.beginTransaction();

    ft.replace(frameLayout, frag);
    if(ajouterAuStack && (fragmentManager.getBackStackEntryCount() == 0 
            || fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-1).getName() != tag))
        ft.addToBackStack(tag);

    ft.commit();
}
于 2013-03-12T16:09:53.727 に答える