Я использовал фрагмент для отображения Ящика навигации, чтобы я мог использовать его в нескольких действиях.
Фрагмент создает панель действий с кнопкой меню, которая используется для открытия ящика.
Я следовал этому руководству из официального документа Android и был несколько успешным вмодифицируя его для использования во фрагменте.Проблема, с которой я столкнулся сейчас, заключается в том, что кнопка меню не открывает ящик, если я щелкаю по нему.
При перетаскивании открывается ящик.
Почему он не открывается?Я предполагаю, что это потому, что функция onOptionsItemSelected
не вызывается, потому что я использую фрагмент вместо обычного AppCompatActivity
.
Код
package sukebei.anilog.ui.fragments;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v7.app.ActionBar;
import android.support.v7.widget.Toolbar;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.support.v4.widget.DrawerLayout;
import android.support.design.widget.NavigationView;
import android.view.MenuItem;
import sukebei.anilog.R;
public class NavigationFragment extends Fragment {
private DrawerLayout mDrawerLayout;
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_navigation, container, false);
// Toolbar
Toolbar toolbar = rootView.findViewById(R.id.toolbar);
((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
ActionBar actionBar = ((AppCompatActivity) getActivity()).getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
mDrawerLayout = rootView.findViewById(R.id.drawer_layout);
NavigationView navigationView = rootView.findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(
new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
menuItem.setChecked(true);
switch (menuItem.getItemId()) {
case R.id.anime_activity:
return true;
}
mDrawerLayout.closeDrawers();
return true;
}
}
);
return rootView;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
}
return super.onOptionsItemSelected(item);
}
}