5

在 Eclipse 为您创建的来自 Google 的示例 master-detail-flow 代码中,片段中有以下内容:

private Callbacks mCallbacks = sDummyCallbacks;

public interface Callbacks {
    public void onItemSelected(String id);
}

private static Callbacks sDummyCallbacks = new Callbacks() {
    @Override
    public void onItemSelected(String id) {
    }
};


@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);

    mCallbacks = (Callbacks) activity;
}

@Override
public void onDetach() {
    super.onDetach();
        // Reset the active callbacks interface to the dummy implementation.
    mCallbacks = sDummyCallbacks;
}

我了解如何使用回调接口从片段与包含 Activity 的片段进行通信,但是这个虚拟回调有什么用?

4

1 回答 1

8

虚拟回调是为了避免在使用时测试回调的有效性。

“重置”回调的另一种方法onDetach是将其设置为 null,但这需要在每次使用时进行 null 测试,这是很多重复/无聊的代码。

于 2013-06-06T08:28:17.840 回答