如果片段不是Null,如何加载它-Android?
我需要一些帮助,因为我对android有点陌生,在我正在开发的android应用程序中,我一直在片段之间导航。我使用代码在片段之间导航如果片段不是Null,如何加载它-Android?,android,android-fragments,Android,Android Fragments,我需要一些帮助,因为我对android有点陌生,在我正在开发的android应用程序中,我一直在片段之间导航。我使用代码在片段之间导航 private void displaySelectedScreen(int id){ Fragment fragment=null; String fragment_tag=""; switch(id) { case R.id.nav_listen:
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);
}
我只需要检查一下,如果片段之前存在(加载),containter应该显示之前加载的片段。但是,如果在第一次加载片段之前未加载片段,则应加载该片段
有谁能帮我实现这一点吗
多谢各位。
我的片段中的代码:(ListenFragment.java)
您不需要声明对片段实例的变量引用。相反,通过标记保存片段,然后获取它。就像这样:
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();
使用以下方法获取片段: getFragmentManager().findFragmentById(R.is.xyz) getFragmentManager().findFragmentByTAG(“XYZ”) 然后使用开始片段: supportFragmentManager.beginTransaction() 这里有一个类似的问题,它可能会有所帮助:
在
ListenFragment
中,检查条件可以是ifview!=空
那么…这就是你要问的吗?如果你能给我看一个示例,那就太好了,因为我对android有点陌生。我只是希望ListenFragment不会每次我导航回该片段时都创建。我会尝试让你知道。非常感谢你,它工作得很好!。你节省了我很多时间。
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();