gpt4 book ai didi

android - 如何隐藏顶部Fragment中的 "Up button"并显示在其他Fragment中?

转载 作者:太空狗 更新时间:2023-10-29 16:01:50 32 4
gpt4 key购买 nike

在与蓝牙相关的应用程序(minSdkVersion="18")中,我有一个 MainActivity.java,显示以下 3 个 UI fragment 之一:

  • MainFragment.java(顶部屏幕)
  • SettingsFragment.java(设置界面,通过菜单进入)
  • ScanningFragment.java(列出附近的蓝牙设备)

screenshot

要显示“向上按钮”并处理“后退按钮”,我有以下代码:

public class MainActivity extends Activity 
implements BleWrapperUiCallbacks {

// set in onResume() of each fragment
private Fragment mActiveFragment = null;

´ @Override
public void onBackPressed() {
if (!getFragmentManager().popBackStackImmediate())
super.onBackPressed();
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
setContentView(R.layout.activity_root);
getActionBar().setDisplayHomeAsUpEnabled(true);

if (savedInstanceState == null) {
Fragment fragment = new MainFragment();
getFragmentManager().beginTransaction()
.replace(R.id.root, fragment, "main")
.commit();
}
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
getFragmentManager().popBackStackImmediate();
break;

case R.id.action_settings:
Fragment fragment = new SettingsFragment();
getFragmentManager().beginTransaction()
.addToBackStack(null)
.replace(R.id.root, fragment, "settings")
.commit();
break;
}

return super.onOptionsItemSelected(item);
}

这很好用,但有一个外观问题,当显示 MainFragment.java 时“向上按钮”仍然显示 - 正如您在上面屏幕截图的左侧所见.

我试过打电话

getActionBar().setHomeButtonEnabled(false);

当该 fragment 处于 Activity 状态时,但这只会禁用“向上按钮” - 而不会真正隐藏它。

最佳答案

在 Little Child 的帮助下(谢谢!),我的解决方案是使用 FragmentManager.OnBackStackChangedListener :

public class MainActivity extends Activity 
implements OnBackStackChangedListener,
BleWrapperUiCallbacks {
@Override
public void onCreate(Bundle savedInstanceState) {
...
getFragmentManager().addOnBackStackChangedListener(this);
}

@Override
public void onBackStackChanged() {
getActionBar().setDisplayHomeAsUpEnabled(
getFragmentManager().getBackStackEntryCount() > 0);
}

关于android - 如何隐藏顶部Fragment中的 "Up button"并显示在其他Fragment中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29099702/

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