gpt4 book ai didi

android - 使用 BottomBar 和 fragment 容器禁用 Android fragment 重新加载

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:37 25 4
gpt4 key购买 nike

好的,我正在构建一个使用 this library 的 Android 应用程序对于底部导航,我使用基本 Activity 将其与 Framelayout 一起保存以管理我的 fragment 以进行加载/替换等。

有效的方法:点击底部栏图标会加载它对应的 fragment ,并且效果很好。

我的问题:如果我点击第一个选项卡,然后点击第二个选项卡,然后点击第一个选项卡再次,整个 fragment 将从头开始重新加载。

我不想要这种行为。任何人都有关于如何在使用底部栏库时保留 fragment 状态的任何好技巧。

我在以前的应用程序中使用寻呼机 View 实现了类似的效果(以前的应用程序没有使用底部栏进行导航)但我不确定如何将寻呼机 View 与 ONE 基本 Activity 一起使用包含用于替换 fragment 的 Framelayout 或者这是否是最佳解决方案。

我喜欢目前为止的解决方案,除了 fragment 每次替换前一个 fragment 时都会从头重新加载。如果有人有任何帮助或建议可以帮助我,将不胜感激。

最佳答案

好吧,我似乎暂时想出了一个变通办法。它在切换选项卡后保持 fragment 状态,所以我很满意。

在托管 fragment 容器的基本 Activity 类中,我有以下内容

public class BaseActivity extends AppCompatActivity
{
AFragment AFragment = new AFragment();
BFragment BFragment = new BFragment();

Fragment currentFragment;

Boolean aIsActive = false;
Boolean bIsActive = false;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_base);

BottomBar bottomBar = BottomBar.attach(this, savedInstanceState);

bottomBar.setItems(
new BottomBarTab(null,"A"),
new BottomBarTab(null,"B")
);

bottomBar.setDefaultTabPosition(0);

bottomBar.setOnTabClickListener(new OnTabClickListener()
{
@Override
public void onTabSelected(int position)
{
if (position == 0)
{
if(!aIsActive)
{
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer,AFragment).commit();
aIsActive = true;
}
else
{
getSupportFragmentManager().beginTransaction().hide(currentFragment).show(AFragment).commit();
}

currentFragment = AFragment;
}
else if(position == 1)
{
if(!bIsActive)
{
getSupportFragmentManager().beginTransaction().add(R.id.fragmentContainer,BFragment).commit();
bIsActive = true;
}
else
{
getSupportFragmentManager().beginTransaction().hide(currentFragment).show(BFragment).commit();
}

currentFragment = BFragment;
}
}

@Override
public void onTabReSelected(int position) {

}
});

}

}

然后你会发现它在没有刷新 fragment 的情况下按预期工作:)如有任何建议或反馈,请告诉我并随时发表评论。

关于android - 使用 BottomBar 和 fragment 容器禁用 Android fragment 重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38492599/

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