在 NavigationUI、Android Studio 中停止页面刷新
Posted
技术标签:
【中文标题】在 NavigationUI、Android Studio 中停止页面刷新【英文标题】:Stop page refreshing in NavigationUI, Android Studio 【发布时间】:2022-01-19 18:33:18 【问题描述】:我是 android 开发新手。有一个奇怪的错误,每当我尝试更改片段时,每次都会加载内容。我正在从第一个片段发出 API 请求,并且每次都会发出请求。
我不确定错误在哪里
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
binding = ActivityBottomTabBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
BottomNavigationView navView = findViewById(R.id.nav_view);
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
.build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_bottom_tab);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);
上面是底部标签的代码。
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState)
binding = FragmentHomeBinding.inflate(inflater, container, false);
View root = binding.getRoot();
listView = binding.mobileList;
cryptoList = new ArrayList<String>();
loadCoinList();
return root;
这是first fragment
的代码。
【问题讨论】:
所以你的意思是每当你返回到第一个片段时,内容就会再次加载? 没错,有什么办法可以恢复以前的状态吗? 【参考方案1】:发生这种情况是因为每次切换片段时,片段都会被销毁并重新创建,再次调用 onCreateView 中的方法。这就是 bottomNavigation 的工作原理。
如果你想保留数据,你可以使用 viewModels。 这里看看:ViewModel
Viewmodel 易于使用,您还可以保留有关配置更改的数据,例如屏幕旋转
【讨论】:
以上是关于在 NavigationUI、Android Studio 中停止页面刷新的主要内容,如果未能解决你的问题,请参考以下文章
如果您位于导航图的起始目的地,为啥android jetpack NavigationUI navigateUp 方法仅打开绘图菜单
带有操作栏图标单击的 NavigationUI 导致片段淡入淡出
在 NavigationUI 的同一主机活动上传递数据并更新片段文本/按钮
深入浅出 NavigationUI | MAD Skills
android.os.NetworkOnMainThreadException 在 android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(St