Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果片段不是Null,如何加载它-Android?_Android_Android Fragments - Fatal编程技术网

如果片段不是Null,如何加载它-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:

我需要一些帮助,因为我对android有点陌生,在我正在开发的android应用程序中,我一直在片段之间导航。我使用代码在片段之间导航

 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
中,检查条件可以是if
view!=空
那么…这就是你要问的吗?如果你能给我看一个示例,那就太好了,因为我对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();