我想在片段中调用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());
}
答案 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;
}