And*_*rds 5 navigation android android-fragments android-viewpager
好的,所以我正在构建一个使用该库进行底部导航的android应用,并且我正在使用基本Activity将其与Framelayout一起保存以管理我的片段以进行加载/替换等。
起作用的方法: 点击底部的条形图标可加载其对应的片段,并且效果很好。
我的问题: 如果我点击第一个选项卡,然后在第二个选项卡,然后在第一个选项卡再次从头开始,整个片段重新加载。
我不要这种行为。人对如何同时保留一个片段的状态什么好的建议ALSO使用底栏库。
我在以前的应用程序中使用pagerview实现了类似的功能(先前的应用程序未使用底部栏进行导航),但是我不确定如何使用具有ONE基本活动的寻呼机视图,该活动保留了Framelayout来替换片段,或者那甚至是最好的解决方案。
我喜欢到目前为止我拥有的解决方案,只是每次碎片替换前一个碎片时都会从头重新加载。如果任何人有任何帮助或建议可以帮助我,将不胜感激。
好吧,我似乎暂时找到了解决办法。它在切换选项卡后保持片段状态,所以我很满意。
在托管片段容器的基本活动类中,我有以下内容
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) {
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
你瞧,它按预期工作,无需刷新片段:)任何建议或反馈请让我知道并随时发表评论。
| 归档时间: |
|
| 查看次数: |
2218 次 |
| 最近记录: |