android-如何阻止我的片段被破坏?

android-如何阻止我的片段被破坏?,第1张

概述我有一个导航视图,其中包含一些项,当按下一项时,它将转到该片段.例如,如果您按下抽屉上的“主页”项,它将d出主页片段.navigationView=(NavigationView)findViewById(R.id.navigation_view);navigationView.setNavigationItemSelectedListener(newNavigatio

我有一个导航视图,其中包含一些项,当按下一项时,它将转到该片段.例如,如果您按下抽屉上的“主页”项,它将d出主页片段.

        navigationVIEw = (NavigationVIEw)findVIEwByID(R.ID.navigation_vIEw);        navigationVIEw.setNavigationItemSelectedListener(new NavigationVIEw.OnNavigationItemSelectedListener() {        @OverrIDe        public boolean onNavigationItemSelected(MenuItem item) {            switch (item.getItemID()) {                case R.ID.home_ID:                    HomeFragment homeFragment = (HomeFragment) fragmentManager.findFragmentByTag("Home");                    if (homeFragment == null)                        homeFragment = new HomeFragment();                    fragmentTransaction = fragmentManager.beginTransaction();                    fragmentTransaction.replace(R.ID.Main, homeFragment, "Home");                    fragmentTransaction.commit();                    getSupportActionbar().setTitle("Home");                    item.setChecked(true);                    drawerLayout.closeDrawers();                    break;                case R.ID.chat_ID:                    ChatFragment chatFragment = (ChatFragment) fragmentManager.findFragmentByTag("Chat");                    if (chatFragment == null)                        chatFragment = new ChatFragment();                    fragmentTransaction = fragmentManager.beginTransaction();                    fragmentTransaction.replace(R.ID.Main, chatFragment, "Chat");                    fragmentTransaction.commit();                    getSupportActionbar().setTitle("Chat");                    item.setChecked(true);                    drawerLayout.closeDrawers();                    break;            }        }    }

因此,我认为正在发生的事情是,当我使用replace()方法时,它正在破坏聊天片段.如果我有关于聊天片段的数据,并且我想确保在更改片段时数据不会消失,该怎么办.

在ChatFragment类中,我放置了此重写方法:

@OverrIDepublic voID onSaveInstanceState(Bundle outState){    Log.d("CHATFRAG", "onSaveInstanceState: been called ");    super.onSaveInstanceState(outState);    outState.putString("textVIEw",textVIEw.getText().toString());    //Save the fragment's state here}

现在,当我在应用程序中的片段之间切换时,不会调用此方法,这意味着片段已被销毁.

有没有一种替代方法,我可以将屏幕上的当前片段与所需的片段交换(而不破坏两者)?
我将有更多的片段(最多十个),是否有不需要重复代码的优化解决方案?

解决方法:

您要用其他片段替换片段,因此第一个片段会被破坏.如果您不想破坏它,则需要添加它而不是替换它

fragmentTransaction.add(R.ID.Main, homeFragment, "Home");
总结

以上是内存溢出为你收集整理的android-如何阻止我的片段被破坏?全部内容,希望文章能够帮你解决android-如何阻止我的片段被破坏?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1093241.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存