gpt4 book ai didi

java - ActionBar 后退按钮打开抽屉而不是返回

转载 作者:行者123 更新时间:2023-12-02 02:10:00 25 4
gpt4 key购买 nike

在我的应用程序中我遇到这样的问题。请注意,我正在使用 fragment ,并且我也有抽屉。

这是我的 MainActivity 中用于抽屉打开/关闭的方法。

    public void drawerInit() {

toolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
setSupportActionBar(toolbar);
drawer = (DrawerLayout) findViewById(R.id.drawer);
view = findViewById(R.id.mainView);

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.syncState();
}

示例我有 3 个 fragment (F1、F2、F3)。 F1 是我的主要 fragment ,我可以在其中打开和关闭抽屉。当我打开 F2 或 F3 fragment 时,我需要将抽屉图标更改为后退箭头。我成功地完成了这一部分,但问题是当我单击此后退箭头时,它会打开抽屉导航而不是返回。那么我该如何修复这部分呢?

这里是我将 fragment 中的图标更改为后退箭头的部分。

((AppCompatActivity) getActivity()).getSupportActionBar().show();
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayShowTitleEnabled(false);
((AppCompatActivity) getActivity()).getSupportActionBar().setDisplayHomeAsUpEnabled(true);
((AppCompatActivity) getActivity()).getSupportActionBar().setHomeButtonEnabled(true);

最佳答案

添加您的 Activity

    public void crateMenuButton(){
toggle.setDrawerIndicatorEnabled(true);
if(toolbarDrawable == null) {
toolbarDrawable = toolbar.getNavigationIcon();
}
toolbar.setNavigationIcon(toolbarDrawable);
invalidateOptionsMenu();
toggle.syncState();
}

public void createBackButton() {
toggle.setDrawerIndicatorEnabled(false);
toggle.setToolbarNavigationClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//if the drawerToggle is disabled, fall off to the home button action
if (!toggle.isDrawerIndicatorEnabled()) {
// pop fragment here
FragmentManager fragmentManager = getSupportFragmentManager();
if (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStack();
}
} else {
if (drawerLayout.isDrawerOpen(navigationView)) {
drawerLayout.closeDrawer(navigationView);
} else {
drawerLayout.openDrawer(navigationView);
}
}
}
});
toolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_arrow_back_white));
}

下载Back Arrow

然后根据需要从您的 fragment 中调用

((YourActivity) getActivity()).createBackButton();
OR
((YourActivity) getActivity()).crateMenuButton();

关于java - ActionBar 后退按钮打开抽屉而不是返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50156152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com