Я только что сделал переход от затмения к Android Studio, и я исправляю некоторые проблемы, которые возникли. Одним из них является удаление навигации на вкладке, предлагаемой ActionBar, и переход на Tablayout, предлагаемый библиотекой поддержки AD. У меня все хорошо работает, но я не могу понять, как добавить элементы меню на панель инструментов, когда на экране появляются определенные фрагменты.
Я думаю, что часть вопроса заключается в том, что моя MainActivity расширяет FragmentActivity, которая принимает setActionBar(), а панель инструментов - из библиотеки поддержки v7 - поэтому, конечно, эта панель инструментов не совместима с этим методом. Я попробовал setSupportActionBar(), но это не метод, найденный в FragmentActivity - здесь мне нужно будет расширить ActionBarActivity для доступа к этому методу, оба из которых устарели (класс и метод).
Итак, остается вопрос, как я могу сделать свои отдельные фрагменты обновленными опциями в меню опций панели инструментов?
activity_main.xml:Android Design Support Library - Tablayout с панелью инструментов
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.design.widget.CoordinatorLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<android.support.v7.widget.Toolbar
android:id="@+id/main_toolbar"
android:layout_width="match_parent"
android:layout_height="?android:attr/actionBarSize"
android:layout_gravity="top"
android:background="@color/blue"
app:layout_scrollFlags="scroll|enterAlways"
app:layout_collapseMode="pin" />
<android.support.design.widget.TabLayout
android:id="@+id/main_sliding_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/blue"
app:tabMode="fixed" />
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
<android.support.v4.view.ViewPager
android:id="@+id/main_viewpager"
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1"
android:background="@android:color/white" />
</LinearLayout>
MainActivity.java:
public class MainActivity extends FragmentActivity implements
TabLayout.OnTabSelectedListener {
private Toolbar mToolbar;
private ViewPager mViewPager;
private TabsPagerAdapter mTabsPagerAdapter;
private TabLayout mTabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// * unrelated code omitted ...
// * Initialize main navigation scheme
mToolbar = (Toolbar)findViewById(R.id.main_toolbar);
mToolbar.setTitleTextColor(getResources().getColor(R.color.white));
mToolbar.setLogo(R.drawable.icon_toolbar);
mViewPager = (ViewPager)findViewById(R.id.main_viewpager);
mTabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mTabsPagerAdapter);
mTabLayout = (TabLayout)findViewById(R.id.main_sliding_tabs);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.setOnTabSelectedListener(this);
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
}
}
ExampleFragment.java:
public class ExampleFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_athlete, container, false);
// * unrelated code omitted ...
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// * unrelated code omitted ...
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.example_action_menu, menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// * unrelated code omitted ...
return super.onOptionsItemSelected(item);
}
}