Android viewPager 未更改标题栏中的标题

Android viewPager not changing the title in titlebar

我有这个 "frame" 带有工具栏和 viewPager 的应用程序。

基础活动:

public abstract class BaseActivity extends AppCompatActivity {

   @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(getLayoutResource());
    }


    protected abstract int getLayoutResource();
}

工具栏活动:

protected static Toolbar toolbar;


@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    View contentView = findViewById(R.id.flToolbarContentContainer);
    if (contentView instanceof ViewGroup) {
        ((ViewGroup) contentView)
                .addView(LayoutInflater.from(this)
                        .inflate(getToolbarLayoutResource()
                                , (ViewGroup) contentView, false));
    }
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
 }

 @Override
 protected int getLayoutResource() {
     return R.layout.activity_toolbar;
 }

 protected abstract int getToolbarLayoutResource();

 public void showToolbar() {
     toolbar.setVisibility(View.VISIBLE);
 }

 public void hideToolbar() {
     toolbar.setVisibility(View.GONE);
 }

    public static void setTitle(String title){
        toolbar.setTitle(title);
    }
}

主要活动:

public class MainActivity extends ToolbarActivity {


    @Override
    protected int getToolbarLayoutResource() {
        return R.layout.activity_main;
    }
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        TabFragment homeFragment = new TabFragment();
        getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.llMainActivityContainer, homeFragment)
                .commit();
    }

还有。标签片段:

public class TabFragment extends Fragment {

    public static TabLayout tabLayout;
    public static ViewPager viewPager;
    public static int int_items = 3 ;
    private String[] titles = new String[3];

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        titles[0] = "Összes";
        titles[1] = "Saját";
        titles[2] = "Közelben";

        /**
         *Inflate tab_layout and setup Views.
         */
            View x =  inflater.inflate(R.layout.view_pager,null);
            tabLayout = (TabLayout) x.findViewById(R.id.tabs);
            viewPager = (ViewPager) x.findViewById(R.id.viewpager);

        /**
         *Set an Apater for the View Pager
         */
        viewPager.setAdapter(new MyAdapter(getChildFragmentManager()));

        /**
         * Now , this is a workaround ,
         * The setupWithViewPager dose't works without the runnable .
         * Maybe a Support Library Bug .
         */

        tabLayout.post(new Runnable() {
            @Override
            public void run() {
                    tabLayout.setupWithViewPager(viewPager);
                   }
        });


        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                ToolbarActivity.setTitle(""+titles[position]);
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        return x;

    }

    class MyAdapter extends FragmentPagerAdapter {

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

        /**
         * Return fragment with respect to Position .
         */

        @Override
        public Fragment getItem(int position)
        {
          switch (position){
              case 0 : return new PrimaryFragment();
              case 1 : return new SecondFragment();
              case 2 : return new ThirdFragment();
          }
        return null;
        }

        @Override
        public int getCount() {

            return int_items;

        }

        /**
         * This method returns the title of the tab according to the position.
         */

        @Override
        public CharSequence getPageTitle(int position) {

            return titles[position];
        }
    }

我的问题是,如果我从 viewPager 打开一个新的 activity 并完成它, 当我 return 到 viewPager activity onPageSelected 侦听器运行但不更改我的工具栏标题时。

你能帮我解决这个问题吗?

谢谢!

尝试

getActivity.setTitle(""+titles[position]);