2016-08-25 2 views
1

Я хочу вызвать setNdefMessageCallback в фрагменте, но я не знаю параметров, которые мне нужно передать этой функции. Я думаю, что он должен быть getContext(), но он дает мне ошибку компиляции, говоря, что метод setNdefPushMessageCallback не может быть применен к этим параметрам.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

Пожалуйста, прочтите документацию. Он объясняет параметры, которые ему нужны. Https://developer.android.com/reference/android/nfc/NfcAdapter.html – 0xDEADC0DE

+0

Даже прочитав документацию, я не понимаю, что указывает первый и второй параметры –

ответ

1

API documentation это довольно ясно. Это метод подпись:

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

Первый параметр (callback) представляет собой экземпляр класса, который реализует интерфейс CreateNdefMessageCallback. Это объект, который должен получить обратный вызов, в котором вы можете собрать сообщение NDEF, которое должно быть нажато. Поскольку вы вызываете метод setNdefPushMessageCallback() из фрагмента, вы, как правило, либо используете сам фрагмент (т. Е. Вы передаете this и добавляете предложение реализации к вашему объявлению об объявлении), либо другой объект, который вы можете контролировать из вашего фрагмента.

Второй параметр (или дополнительные параметры) - это действия, для которых вы хотите активировать обратный вызов 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; 
    }