2015-09-30 74 views
2

我有一个可能有点愚蠢的问题,但我没有找到任何答案。所以我有一个片段和一些扩展Observable的实体对象。我希望在我的实体中进行一些更改时通知我的片段,因此我在那里实施了一个观察者。实现观察者模式的片段

现在我有些疑问,必须添加和删除观察员。我的意思是片段中最正确的回调。

现在我使用onViewCreated添加观察者,onDestroyView删除观察者,但我认为可能有更好的地方去做。

这里是一个示例代码:

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    WheelManager.getInstance().addObserver(this); 
    PreferenceManager.getInstance().addObserver(this); 
} 

@Override 
    public void onDestroyView() { 
     super.onDestroyView(); 
     WheelManager.getInstance().deleteObserver(this); 
     PreferenceManager.getInstance().deleteObserver(this); 
    } 

我将是答案非常感激。

UPD:我也浏览过Official Developer Guide,但是对这个问题一无所知。

+0

你究竟在做什么更新? – JoeyJubb

+0

在片段视图中显示一些更新的值。 –

回答

1

正如你所说你只是更新视图,onCreateView和onDestroyView是适用于此代码的地方。

有一个例外,这是当你更新AdapterViews和RecyclerViews - 你可以在onAttach实例化你的适配器,并从那里开始观察(并停止在onDetach)。你可以将你的适配器连接到onCreateView中的视图,而不用担心NPE等。

+0

好的,看起来像onCreateView和onDestroyView是添加/删除观察者的最佳位置。 –