gpt4 book ai didi

android - 使用底部导航栏防止 fragment 刷新

转载 作者:行者123 更新时间:2023-11-29 23:05:56 25 4
gpt4 key购买 nike

我有以下底部导航栏代码在 3 个 fragment 之间切换:

public class MainActivity extends AppCompatActivity {

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {

@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;

switch (item.getItemId()) {
case R.id.navigation_home:
fragment = new HomeFragment();
break;

case R.id.navigation_dashboard:
fragment = new DashboardFragment();
break;

case R.id.navigation_notifications:
fragment = new NotificationsFragment();
break;

}

return loadFragment(fragment);
}

};

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

loadFragment(new HomeFragment());


BottomNavigationView navigation = (BottomNavigationView) findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
}

private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
return true;
}
return false;
}
}

在 fragment 中有带有列表的 RecyclerViews。每次我在选项卡之间( fragment 之间)切换时,看起来 fragment 都重新加载了,列表跳到顶部。我想防止重新加载,以便用户在切换 fragment 之前停留在他查看的列表中的同一位置

最佳答案

问题是您每次都在创建一个新实例。您可以像这样缓存实例:

    private Fragment mHomeFragment = new HomeFragment();
private Fragment mDashboardFragment = new DashboardFragment();
private Fragment mNotificationsFragment = new NotificationsFragment();


@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;

switch (item.getItemId()) {
case R.id.navigation_home:
fragment = mHomeFragment;
break;

case R.id.navigation_dashboard:
fragment = mDashboardFragment;
break;

case R.id.navigation_notifications:
fragment = mNotificationsFragment;
break;

}

return loadFragment(fragment);
}

关于android - 使用底部导航栏防止 fragment 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56566627/

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