gpt4 book ai didi

android - 导航 DrawerLayout 按钮永远不会更改为后退按钮,也不会导航

转载 作者:行者123 更新时间:2023-11-29 00:17:57 24 4
gpt4 key购买 nike

我正在使用 DrawerLayout 并在每次用户点击抽屉菜单中的项目时添加一个新的 Fragment。这非常有效。

在其中一个 fragment 中,用户可以导航到另一个 fragment :

private void loadArchives() {

PUCNewsArchive news_archive = new PUCNewsArchive();

getFragmentManager()
.beginTransaction()
.add(R.id.container_frame, news_archive, "news_archives")
.addToBackStack(null)
.commit();

}

这将正确地将另一个 fragment 添加到堆栈中。但是,它不会将操作栏抽屉按钮/图标更改为后退按钮。因此,在敲击时只会再次打开抽屉,这是不应该做的。向后导航的唯一方法是使用硬件后退按钮,它会返回到上一个 fragment。我尝试将以下内容添加到我的主要 Activity 以查看发生了什么:

@Override
public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("MainActivity", "popping backstack");
fm.popBackStack();
} else {
Log.i("MainActivity", "nothing on backstack, calling super");
super.onBackPressed();
}
}

但只有当我使用硬件后退按钮时才会调用它,因为抽屉按钮只会打开抽屉。

我假设这应该检查它是否应该打开抽屉或导航:

@Override
public boolean onOptionsItemSelected(MenuItem item) {

if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}

switch(item.getItemId()) {
case android.R.id.home:

return true;
default:
return super.onOptionsItemSelected(item);
}

}

我错过了什么?为什么抽屉按钮永远不会变成后退按钮,也不会像后退按钮那样工作?

最佳答案

您不需要使用 onBackPressed()

我有一个非常similar situation在我的应用程序中。这是我如何让它工作的:

我在主要 Activity 中创建了一个方法:

public void foo(int fragment_id) {
if(fragment_id == some_id){
// keep the drawer carat
mDrawerToggle.setDrawerIndicatorEnabled(true);
}else{
// Disable the drawer carat, and enable the back button
mDrawerToggle.setDrawerIndicatorEnabled(false);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
}

我从每个 fragment 的 onResume() 调用此方法,并将特定的 fragment ID 传递给它。或者,您可以从主 Activity 中的 loadFragment()/loadArchives() 方法调用它。这对我来说很好。

关于android - 导航 DrawerLayout 按钮永远不会更改为后退按钮,也不会导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166702/

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