使用底部导航控制器在不丢失数据的情况下切换片段



我刚开始使用Android进行开发。我现在面临的第一个挑战是如何在使用BottomNavigationController(由Android Studio自动生成(在片段之间切换时保存片段数据

我尝试过使用ViewModel,但由于每次切换时都会调用onDestroy((,因此数据也会丢失onSaveInstanceState((在切换片段时也不会被调用。

我在网上看到的许多方法或解决方案都使用了不推荐使用的函数(由于我只是一个初学者,我不知道现在使用的新函数是什么(

我希望有人能帮我!谢谢

当一个片段被更改时,它不会被销毁,而是被添加到后台。所有实例变量都保留在那里。您可以在onActivityCreated方法中检索数据。这里有一个例子:


public class ExampleFragment extends Fragment
{ 
private List<String> myData;
@Override public void onSaveInstanceState(final Bundle outState)
{ 
super.onSaveInstanceState(outState);
outState.putSerializable("list", (Serializable) myData); 
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{ 
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) { 
myData = (List<String>) savedInstanceState.getSerializable("list"); } 
else { if (myData != null)
{ //returning from backstack} 
else 
{  myData = computeData(); } } } }

编辑:-您也可以使用共享首选项。示例:-


SharedPreferences shared ;
shared = getSharedPreferences("prefs", Context.MODE_PRIVATE);
shared.edit().putString("JSON",jsonString).commit(); 

在此处阅读有关使用共享首选项存储和检索数据的更多信息:https://www-geeksforgeeks-org.cdn.ampproject.org/v/s/www.geeksforgeeks.org/shared-preferences-in-android-with-examples/amp/?amp_js_v=a3&amp_gsa=1&usqp=mq331AQFKAGwASA%3D#aoh=15850227567178&referrer=https%3A%2F%2Fww.google.com&amp_tf=来自%20%251%24s&ampshare=https%3A%2F%2Fww.heeksforgeeks.org/2F在android中共享偏好,示例%2F

相关内容

  • 没有找到相关文章

最新更新