片段不会更新其他片段的值

时间:2017-05-16 00:54:49

标签: java android android-fragments bundle detach

我是android的新手,我的目的是将这些值传递给一个片段,它是我当前的片段。但我想更新片段,我将这些数据放在不同的片段中。

当我执行此操作时,我的包转到了片段。即使我可以在textView中执行setText而不停止应用程序也不会改变它。

private void passToScreen(String title, String artist, String album, Long duration) {
        bundle.putString("songTitle",title);
        bundle.putString("songArtist", artist);
        bundle.putString("songAlbum", album);
        bundle.putString("durationSong", duration.toString());

        mActivity.getSupportFragmentManager()
                .beginTransaction()
                .detach(songScreen)
                .commitNowAllowingStateLoss();

        songScreen.setArguments(bundle);

        mActivity.getSupportFragmentManager()
                .beginTransaction()
                .attach(songScreen)
                .commitAllowingStateLoss();

    })

我做错了什么?

提前谢谢你。

2 个答案:

答案 0 :(得分:0)

如果片段已经可见,那么您可以使用FragmentManager获取该片段的实例:

MyFragment myFragment = (MyFragment) getSupportFragmentManager()
                .findFragmentById(R.id.fragment_or_container_id);
myFragment.updateViews(bundle);

然后在fragment类中创建方法以更新视图:

public void updateViews(Bundle bundle) {
    //update the views
}

您无需分离片段。请注意,这仅在片段完成“提交”过程时才有效。 commit()和commitAllowingStateLoss()函数异步工作,因此如果在commit()之后立即调用findFragmentById(),它将返回null。

答案 1 :(得分:0)

相关问题