【问题标题】:Android title changes but fragment stays the same after replace commitAndroid标题更改但片段在替换提交后保持不变
【发布时间】:2016-06-13 01:18:17
【问题描述】:

我有一个简单的导航抽屉。当我单击该项目以更改当前片段时,它会运行替换命令的代码,但片段不会更改。

这是我设置导航抽屉的方法:

private void setupNavigationMenu(final Bundle savedInstanceState) {
        final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.nav_drawer_items);

        // Create the navigation drawer.
        navigationDrawer = new NavigationDrawer(this, toolbar, drawerLayout, mDrawerList,
                R.id.main_fragment_container);

        String[] osArray = {"Discover Tunes", "My Discovered Tunes"};
        mAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, osArray);
        mDrawerList.setAdapter(mAdapter);

        if (savedInstanceState == null) {
            // Add the home fragment to be displayed initially.
            discoverSongs();
        }

        mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                if (position == 0){
                    discoverSongs();
                    drawerLayout.closeDrawers();

                } else {

                    myDiscoveredSongs();
                    drawerLayout.closeDrawers();

                }
            }
        });

正如您在上面看到的,我有 onitemclicklistner 运行函数 discoverSongs() 和 myDiscoveredSongs()。当我单击列表时,我可以看到正确的位置正在工作并且正确的功能正在运行。但是 discoverSongs() 的片段总是出现。

这是我的 discoverSongs() 函数:

 public void discoverSongs() {

        final Fragment fragment = new DiscoverSongFragment();

        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.main_fragment_container, fragment, DiscoverSongFragment.class.getSimpleName())
                .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
                .commit();

        setTitle("Discover Tunes");

myDiscoveredSongs() 函数如下所示:

public void myDiscoveredSongs() {

    final Fragment fragment = new DiscoverSongFragment();

    getSupportFragmentManager()
            .beginTransaction()
            .replace(R.id.main_fragment_container, fragment, MyDiscoveredSongsFragment.class.getSimpleName())
            .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
            .commit();

    setTitle("My Discovered Tunes");

}

感谢您的帮助。

【问题讨论】:

    标签: android android-fragments navigation-drawer fragmenttransaction


    【解决方案1】:

    您在myDiscoveredSongs() 方法中使用相同的片段名称,因此更改此行代码

    final Fragment fragment = new DiscoverSongFragment();
    

    在 inmyDiscoveredSongs() 中。

    【讨论】:

      猜你喜欢
      • 2015-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2017-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多