从片段

时间:2016-08-25 10:51:59

标签: java android android-fragments nfc android-beam

我想在片段中调用setNdefMessageCallback,但我不知道我必须传递给该函数的参数。我认为它应该是getContext(),但它给我一个编译错误,说方法setNdefPushMessageCallback不能应用于那些参数。

@Override
public void onStart() {
    super.onStart();
    pm = getActivity().getPackageManager();
    //procedure that checks is NFC is avaible
    checkNfc();

    nfcAdapter = NfcAdapter.getDefaultAdapter(getContext());
    nfcAdapter.setNdefPushMessageCallback(getActivity(),getActivity());
}

1 个答案:

答案 0 :(得分:1)

API documentation对此很清楚。这是方法签名:

void setNdefPushMessageCallback (NfcAdapter.CreateNdefMessageCallback callback, 
                                 Activity activity, 
                                 Activity... activities)

第一个参数(callback)是实现CreateNdefMessageCallback接口的类的实例。这是应该接收回调的对象,您可以在其中汇编应该推送的NDEF消息。因为你从一个片段调用方法setNdefPushMessageCallback(),你通常会使用片段本身(即你传递this并在你的fragement声明中添加一个implements子句),或者你可以从你控制的另一个对象你的片段。

第二个参数(或更多参数)是您要为其启用NDEF消息推送回调的活动。这通常是加载片段的活动(this.getActivity())。

因此,您可以这样做:

public class MyFragment extends Fragment implements NfcAdapter.CreateNdefMessageCallback {

    @Override
    public void onStart() {
        ...

        nfcAdapter.setNdefPushMessageCallback(this, getActivity());

    }

    public NdefMessage createNdefMessage(NfcEvent event) {
        // TODO: assemble an NDEF message

        return ndefMessage;
    }