У меня есть активность и фрагмент.В этом упражнении у меня есть панель инструментов и ящик.Поэтому я хочу добавить стрелку назад во фрагмент и добавить слушатель щелчка для этого.Все хорошо, во фрагменте у меня есть кнопка со стрелкой назад, но когда я нажимаю на нее, открывается ящик.Так как мне это исправить?Может я что-то не так сделал в своем коде?
Вот мой код активности.MainActivity.class
private Toolbar toolbar;
private DrawerLayout drawer;
private ActionBarDrawerToggle toggle;
private View view;
private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = findViewById(R.id.mainView);
button = findViewById(R.id.about_us);
initToolbar();
drawerInit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
return true;
default:
return false;
}
}
@Override
public void replaceFragment(BaseFragment fragment, Boolean isAddToBackStack) {
String backStateName = fragment.getFragmentName();
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.main_fragment_container, fragment, backStateName);
if (isAddToBackStack) {
transaction.addToBackStack(backStateName);
}
transaction.commit();
}
public void initToolbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(toolbar);
}
public void drawerInit() {
drawer = (DrawerLayout) findViewById(R.id.drawer);
toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
float moveFactor = (drawerView.getWidth() * slideOffset);
view.setTranslationX(moveFactor);
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
}
};
drawer.addDrawerListener(toggle);
toggle.setDrawerIndicatorEnabled(true);
toggle.syncState();
}
//fragments back press part
@Override
public void onBackPressed() {
super.onBackPressed();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
Итак, я инициализирую панель инструментов и ящик.И здесь я инициализирую свой фрагмент
public class AboutUs extends BaseFragment {
View mainView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mainView = inflater.inflate(R.layout.about_us, container, false);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayShowHomeEnabled(true);
((AppCompatActivity)getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity)getActivity()).getSupportActionBar().setTitle("About us");
return mainView;
}
}
Поэтому я попытался переопределить onOptionsItemSelected
в этом фрагменте, но это не помогло.Значок изменится на стрелку назад во фрагменте, но при нажатии открывает ящик.Есть идеи как это исправить?Я попробовал почти все ответы на другие вопросы, подобные этому, но они не помогли.