[英]Change ActionBar title from Fragment
我有四個片段
問題
當我在兩個fragment
之間跳轉時,每個fragment
中都沒有顯示正確的標題。
標題應與每個片段中的文本相同。
我的MainActivity
看起來像這樣:
public class MainActivity extends AppCompatActivity {
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
viewPager = (ViewPager) findViewById(R.id.viewpager);
setupViewPager(viewPager);
tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.setupWithViewPager(viewPager);
}
private void setupViewPager(ViewPager viewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFragment(new InfoFragment(), "INFO");
adapter.addFragment(new NavFragment(), "NAV");
adapter.addFragment(new PetrolFragment(), "PETROL");
adapter.addFragment(new CalcFragment(), "CALC");
viewPager.setAdapter(adapter);
}
public void setActionBarTitle(String title) {
getSupportActionBar().setTitle(title);
}
我的每個片段如下所示:
public class InfoFragment extends Fragment {
public InfoFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MainActivity) getActivity()).setActionBarTitle("INFO"); // here are other names according to each fragment
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.fragment_info, container, false);
}
}
我不知道這是否是正確的方法,但是您可以將頁面更改偵聽器添加到viewpager中,並可以在onPageSelected方法中更改標題:
yourViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// change your title
// inflate menu
// customize your toolbar
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
試試下面的代碼
對於片段標題:
getActivity().getActionBar().setTitle("Fragment1");
將此行添加到所有片段onCreate
或OnCreateView
方法中
((MainActivity) getActivity()).setActionBarTitle("Your title");
默認情況下在MainActivity
設置一個片段
viewPager.setCurrentItem(0);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.