我是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();
})
我做错了什么?
提前谢谢你。
答案 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)