android - 如果片段不是空的,如何加载片段 - Android?
问题描述
我需要一些帮助,因为我对 android 有点陌生,在我正在开发的 android 应用程序中,我一直在 Fragments 之间导航。我使用代码在片段之间导航。
private void displaySelectedScreen(int id){
Fragment fragment=null;
String fragment_tag="";
switch(id)
{
case R.id.nav_listen:
fragment=new ListenFragment();
fragment_tag="LISTENTAG";
break;
case R.id.nav_programs:
break;
case R.id.nav_stories:
break;
case R.id.nav_about:
break;
case R.id.nav_feedback:
break;
case R.id.nav_share:
shareTextUrl();
break;
}
if(fragment!=null){
FragmentTransaction ft=getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame,fragment,fragment_tag);
ft.commit();
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
}
我只需要检查之前是否存在(加载)片段,容器应该显示之前加载的片段。但是,如果在第一次加载 Fragment 之前没有加载 Fragment。
谁能帮我实现这一目标?
非常感谢你。我的片段内的代码:(ListenFragment.java)
public class ListenFragment extends Fragment
{
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
{
super.onViewCreated(view, savedInstanceState);
getActivity().setTitle("Listen Live");
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
final View InputFragmentView=inflater.inflate(R.layout.listen_layout,container,false);
return InputFragmentView;
}
解决方案
您不需要声明对 Fragment 实例的变量引用。相反,按标签保存您的片段然后获取它。像那样:
Fragment fragment = getSupportFragmentManager().findFragmentByTag("fragment_tag");
if(fragment == null) {
fragment=new ListenFragment();
}
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, fragment, fragment_tag);
ft.commit();
推荐阅读
- python - Freshdesk api调用返回有限数量的票
- neo4j - 使用 neo4j java jdbc 驱动程序获取连接时观察到缓慢
- r - 如何将时间序列图添加到常规图?
- javascript - 如何在箭头函数表达式中编写 if 语句?
- javascript - 等待元素可见的功能不起作用javascript
- java - 为什么 Java 在尝试打印大随机数时会报告不匹配?
- java - Java Swing:使用 Thread.sleep() 制作的动画未按预期工作
- php - 错误的表格格式引导程序
- python-3.x - python:tkinter treeview 颜色没有更新
- java - 尝试在 Spring Boot 中访问两个数据库时创建名为“entityManagerFactory”的 bean 时出错