Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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
Android 重新创建一个创建的片段?_Android_Android Fragments - Fatal编程技术网

Android 重新创建一个创建的片段?

Android 重新创建一个创建的片段?,android,android-fragments,Android,Android Fragments,我有一个活动,它在从web服务接收数据后将一些数据写入SharedReferences,并显示片段。这些片段使用的方法需要这些SharedReference来填充片段布局 问题是,当片段最初被创建时,那些共享首选项还没有被编写,没有它们,片段是空白的。写入SharedReferences后如何重新创建片段?无需重新创建片段,这将是一项非常繁重的操作。使用片段中的SharedReferences.RegisterOnSharedReferenceChangeListener()注册回调,以便在发生

我有一个活动,它在从web服务接收数据后将一些数据写入SharedReferences,并显示片段。这些片段使用的方法需要这些SharedReference来填充片段布局


问题是,当片段最初被创建时,那些共享首选项还没有被编写,没有它们,片段是空白的。写入SharedReferences后如何重新创建片段?

无需重新创建
片段,这将是一项非常繁重的操作。使用
片段中的
SharedReferences.RegisterOnSharedReferenceChangeListener()
注册回调,以便在发生更改时收到通知。然后在您的
片段中,提供一个实现
SharedReferences.OnSharedPreferenceChangeListener
的实例。通常当您需要在依赖于特定逻辑的活动或片段上重新创建任何内容时,请参见和。

,例如,来自服务的回调。你应该把这个逻辑放在一个方法上,然后当你得到回调时你应该运行这个“逻辑”。所以,获取数据,然后用片段开始活动?拉里的回答是正确的,我认为重新创建片段不是最好的方法,无论如何,如果你想的话,试试这个:
FragmentTransaction ft=getFragmentManager().beginTransaction(); ft.detach(this).attach(this.commit()漂亮,因此当共享首选项更新时,片段将调用其方法进行填充,而不是在oncreateview中调用该方法。这很有道理,我要试一试。