反推android片段导航

反推android片段导航,android,android-fragments,fragment-backstack,Android,Android Fragments,Fragment Backstack,以下是我使用导航抽屉显示片段的方式: private void displayView(int position) { // update the main content by replacing fragments Fragment fragment = null; switch (position) { case 0: fragment = new Fragmen

以下是我使用导航抽屉显示片段的方式:

private void displayView(int position) {
            // update the main content by replacing fragments
            Fragment fragment = null;
            switch (position) {
            case 0:
                fragment = new Fragment0();
                break;
            case 1:
                fragment = new Fragment1();
                break;
            case 2:
                fragment = new Fragment2();
                break;
            case 3:
                fragment = new Fragment3();
                break;
            case 4:
                fragment = new Fragment4();
                break;
            case 5:
                fragment = new Fragment5();

                }

            default:
                break;
            }

            if (fragment != null) {
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction()
                        .replace(R.id.frame_container, fragment)
                        .addToBackStack(null)
                        .commit();

                // update selected item and title, then close the drawer
                mDrawerList.setItemChecked(position, true);
                mDrawerList.setSelection(position);
                setTitle(navMenuTitles[position]);
                mDrawerLayout.closeDrawer(drawerll);
            } else {
                // error in creating fragment
                Log.e("MainActivity", "Error in creating fragment");
            }
        }
假设用户导航到
片段2->片段5->片段3。

如果用户单击
后退按钮
我需要有
降序
,在每个片段上,当用户转到特定的
片段时,我显示片段的
名称
,即:

片段3->片段5->片段2。

这就是我尝试过的:

第一种方法:

FragmentManager fm = getSupportFragmentManager();
int count = fm.getBackStackEntryCount();
for(int i = 0; i < count; ++i) {
    fm.popBackStackImmediate();
}
fragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
我无法使此工作**(即,我无法将其移回我来自**的片段),也无法显示基于backbackback的片段名称

非常感谢您的帮助。

请尝试以下方法:

if (fragment != null) {

        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction()
                .replace(R.id.frame_container, fragment).commit();
        menuList.setItemChecked(position, true);
        menuList.setSelection(position);
    }
在保存片段的活动中,通过

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
         getSupportFragmentManager().popBackStack();
         getSupportFragmentManager().beginTransaction().commit();
    }
    else {
        super.onBackPressed();
    }
}
1.退后 您可以在
onBackPressed
中使用
getSupportFragmentManager().popBackStack()
方法:

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
         getSupportFragmentManager().popBackStack();
         getSupportFragmentManager().beginTransaction().commit();
    }
    else {
        super.onBackPressed();
    }
}
不要忘记在BackStack中添加片段,如:

transaction.addToBackStack(null);
2.显示名称 要在actionbar中显示当前片段名称,您可以在片段的
onResume
上获取它:

@Override
protected void onResume() {
    super.onResume();

    ((FrgmentActivtiyName)getActivity).changeTitle("title");
}
定义一种方法,用于在活动中的actionbar中设置标题:

public void changeTitle(String titleToSet) {
   // set title as titleToSet
}

希望能有帮助ツ

我想你的导航系统运行得很好,你面临的问题是你可以使用的标题

public class SampleFragment extends Fragment{

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

                // Creating view correspoding to the fragment
        View v = inflater.inflate(R.layout.fragment_layout, container, false);

        // Updating the action bar title
        getActivity().getActionBar().setTitle("Screen name");


        return v;
    }
}

在每一个片段中。每当你按下backpress时,fragmemt的onCreateView方法(从Backback弹出的方法)被调用,标题将再次设置为替换旧标题

可能是helpful@SweetWisherシ-我在这一行得到错误Fragment Fragment=fragManager.getFragments().get(计数>0?计数-1:count);声明FragmentManager的getFragments未定义,我认为您的Backback工作正常。您可以以相同的方式导航回Gone。如果您想获取堆栈计数,可以使用getSupportFragmentManager().GetBackBackbackEntryCount()方法是的,但是我如何设置标题,因为在单击BackButton时标题不会更改您需要使用
getSupportFragmentManager()
ie v4。Fragment@Bhargav-在这里我如何得到碎片的位置?我不认为这是必要的,因为他有所有的碎片在后台能够显示在相同的顺序,当导航回来。因此,无需从中添加或删除任何片段stack@SweetWisherシ- 阿伦说的是对的。我可以展示它们,但问题在于标题。这句话的意思是:我无法让它工作(即,我无法将它移回我所来自的片段),也无法根据背景显示片段的名称。上面说你不能搬回去