Я пытаюсь создать экземпляр autocompleteTextview, и у меня есть адаптер, который заполняет список контактов. Когда пользователь выбирает контакт, я передаю номер мобильного телефона методу обратного вызова.Метод обратного вызова, предоставляющий исключение nullpointer Android
Вот мой интерфейс обратного вызова.
public interface OnTaskCompleted {
void taskCompleted(String errorMessage);
}
Вот как я создаю экземпляр своего пользовательского автозаполненияTextview.
myListener = new OnTaskCompleted() {
@Override
public void taskCompleted(String errorMessage) {
}
};
SingleSelectContactmToField = new SingleSelectContact(getActivity().getApplicationContext(), myListener);
Это мой класс SingleSelectContact.
public class SingleSelectContact extends MultiAutoCompleteTextView implements OnItemClickListener {
private OnTaskCompleted mListener;
public SingleSelectContact(Context context, OnTaskCompleted listener) {
super(context);
init(context);
mListener = listener;
}
/* Constructor */
public SingleSelectContact(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
/* Constructor */
public SingleSelectContact(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
init(context);
}
/* set listeners for item click and text change */
public void init(Context context){
setOnItemClickListener(this);
addTextChangedListener(textWather);
}
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Map<String, String> currentContact = (Map<String, String>)parent.getItemAtPosition(position);
String contactName = currentContact.get("Name");
String contactId = currentContact.get("Number");
setText(contactName);
setSelection(getText().length());
mListener.taskCompleted(contactId); /*I GET A NULL POINTER EXECLPTION HERE*/
}
У меня есть отладка, и я вижу, что в конструкторе слушатель получает экземпляр правильно. Но внутри onItemClick значение mListener показано равным нулю. Помощь приветствуется. Вот ошибка журнал я получаю
E/AndroidRuntime(24202): java.lang.NullPointerException
E/AndroidRuntime(24202): at com.citrus.citruspay.SingleSelectContact.onItemClick(SingleSelectContact.java:119)
E/AndroidRuntime(24202): at android.widget.AutoCompleteTextView.performCompletion(AutoCompleteTextView.java:902)
E/AndroidRuntime(24202): at android.widget.AutoCompleteTextView.access$500(AutoCompleteTextView.java:91)
E/AndroidRuntime(24202): at android.widget.AutoCompleteTextView$DropDownItemClickListener.onItemClick(AutoCompleteTextView.java:1192)
E/AndroidRuntime(24202): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
E/AndroidRuntime(24202): at android.widget.AbsListView.performItemClick(AbsListView.java:1128)
E/AndroidRuntime(24202): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2812)
E/AndroidRuntime(24202): at android.widget.AbsListView$1.run(AbsListView.java:3571)
E/AndroidRuntime(24202): at android.os.Handler.handleCallback(Handler.java:725)
E/AndroidRuntime(24202): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(24202): at android.os.Looper.loop(Looper.java:153)
E/AndroidRuntime(24202): at android.app.ActivityThread.main(ActivityThread.java:5299)
E/AndroidRuntime(24202): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(24202): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime(24202): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)
E/AndroidRuntime(24202): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
E/AndroidRuntime(24202): at dalvik.system.NativeStart.main(Native Method)
Просьба указать трассировку стека? –
отредактирован, проверьте. – user1051505
попробуйте назначить слушателя перед вызовом 'init (context)'? –