当前位置: 首页 > 知识库问答 >
问题:

防止在每次单击bottomnavigation选项卡时重新创建片段

劳彦
2023-03-14

我在android中使用BottomNavigationView来制作一个像Instagram一样的应用程序。我在NavigationTabs中使用片段。应用程序有5个标签初始我已经设置为活动标签的中间标签和加载它一旦应用程序启动。当我单击任何其他选项卡时,就会进行网络调用并加载数据。现在,当我按下on back按钮或再次单击last选项卡(在启动时加载)时,片段将被重新创建,并进行网络调用以加载相同的数据。我想用相同的数据显示以前的片段,而不重新创建。

我试过用

 if (item.getItemId() == R.id.nav_OverView && _current != R.id.nav_OverView) {
      Overview _overView = new Overview(); 
     _fragmentTransaction.hide(_currentFragment);
     _fragmentTransaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
     _fragmentTransaction.add(R.id.content_base_drawer, _overView);
     _fragmentTransaction.commit();
     _current = R.id.nav_OverView;
      viewIsAtHome = true;
     }

我知道使用remove和add和使用replace是一样的。

任何帮助都很感激。

共有1个答案

莘欣怿
2023-03-14

在创建视图之前,您可以检查视图是否已经创建,下面的代码有助于解决片段重新创建问题。

View view;

@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState)
{

if (view == null) 

  {
        view = inflater.inflate(R.layout.frag_layout, container, false);
        init(view);
  }

    return view;
}
 类似资料:
  • 我使用有5个选项卡的BottomNavigationView。最初,我加载第一个标签一旦应用程序启动。当我单击任何其他选项卡时,就会调用API并加载数据。现在,当我再次单击上一个选项卡(在启动时加载)时,API调用将再次加载相同的数据。

  • 我正在开发一个应用程序,使用ActionBar导航,我有3个标签(我不使用tabhost)如下图: 在第一个选项卡中,将显示一个名为FragmentListItem的片段,如果单击Item1,FragmentListItem将被另一个名为FragmentItemDetails的片段替换,该片段显示所选项的详细信息。 我的问题是,当我选择Tab2或tab3,然后再次选择Tab1,我得到的不再是fra

  • 我已经创建了一个应用程序的布局有三个标签在Android2.3。每个选项卡都有一个片段,在每个片段中,都有一个列表视图。在列表视图中显示的所有数据都来自互联网,数据总是在变化,所以每次我看那个片段的时候都想重新加载数据。例如,我现在正在观看“tab1”,当我单击“tab2”时,“tab2”中的数据将重新加载,而当我单击返回“tab1”时,“tab1”中的数据也将再次重新加载。我试过了 TabSAd

  • 我有一个,有4个选项卡。

  • 我已经在我的片段中重写了以下方法:setUserVisibleHint 在fragment类中,变量设置为:private var isLoadOnce=false。 我有3个片段,问题是当我的活动popsup时,第一个片段是可见的,如果我单击最后一个选项卡,也就是第三个选项卡加载第三个片段,什么也不会发生,即web服务根本不会调用。

  • 我有导航抽屉的BaseActivity,我在其中使用片段管理器在片段布局中显示/隐藏片段,当单击每个导航抽屉项时,我希望每次单击导航项时都刷新我的片段。我尝试了两种方法,例如片段附加/分离,但它不起作用,有谁能帮我在每次点击导航项时刷新我的片段吗。