将一个片段调用到另一个片段时更改标题TextView

时间:2017-03-16 11:02:41

标签: android android-layout android-fragments navigation

我正在处理我添加了带标签的导航抽屉的应用程序。因此,对于导航抽屉菜单选项,我为每个选项创建一个片段,它运行良好......

在我的主要活动中,我将TabFragment(包含fragment_1或fragment_2)充气为UI,并且在Fragment_1上有一个按钮,当我点击按钮时我要打开导航抽屉片段....

我的导航抽屉片段打开正常,但问题是当我的导航抽屉片段打开时,titleBar没有根据片段标题进行更改...

注意:我知道当我们打开一个片段时,我们必须将片段视图替换为新片段视图,但我想将片段作为活动打开

enter image description here

图1:当我点击Button时出现第二张图片,但我想更改TitleView并删除Navigation drawer图标。 enter image description here

修改

在我的MainActivity中,我将Tabfragment膨胀为

mFragmentTransaction=mFragmentManager.beginTransaction();
mFragmentTransaction.replace(R.id.containerView, new TabFragment()).commit();

MyTabFragment:

public class TabFragment extends Fragment {

    public TabFragment() {
        // Required empty public constructor
    }
    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 2 ;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View x=inflater.inflate(R.layout.content_main_menu,null);
        tabLayout=(TabLayout) x.findViewById(R.id.tabs);
        viewPager =(ViewPager) x.findViewById(R.id.viewpager);

        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));
        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                tabLayout.setupWithViewPager(viewPager);
            }
        });
        return x;
    }

    class MyAdapter extends FragmentPagerAdapter{

        public MyAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int position) {
            switch (position){
                case 0:
                    return new HomeFragment();
                case 1:
                    return new Offers();
            }
            return null;
        }

        @Override
        public int getCount() {
            return int_items;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            switch (position){
                case 0 :
                    return "Home";
                case 1:
                    return "Offers";
            }
            return null;
        }
    }
}

按钮点击HomeFragment(或fragment_1)

Fragment fragment = new NavigationDrawerFragment();
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.containerView, fragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();

1 个答案:

答案 0 :(得分:0)

我只是找到我的问题答案..

在我尝试将片段调用到片段类之前,这就是我的ContainerView在NavigationDrawer片段中保持相同的原因。所以现在这一次,我正在创建一个新的Activity,在这个Activity中我膨胀了导航Drawer片段,因为我之前的ContainerView被New Activity布局替换了