Я хотел бы запустить метод «ConfirmChallenge» в «MainfeedListAdapter» после нажатия кнопки подтверждения во фрагменте диалогового окна «ConfirmChallengeDialog».
Исключение NullPointerException появилось при вызове «ConfirmChallengeListener.onConfirmChallenge ()» в OnClickListener () кнопки подтверждения. Что я здесь делаю не так? Надеюсь, мой вопрос ясен.
Ниже фрагмент диалога
public class ConfirmChallengeDialog extends DialogFragment {
public interface OnConfirmChallengeListener{
void onConfirmChallenge();
}
OnConfirmChallengeListener mOnConfirmChallengeListener;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.dialog_confirm_challenge, container, false);
TextView confirmDialog = (TextView) view.findViewById(R.id.dialogConfirm);
confirmDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: captured challenge and confirming with holder: ");
mOnConfirmChallengeListener.onConfirmChallenge();
getDialog().dismiss();
}
});
TextView cancelDialog = (TextView) view.findViewById(R.id.dialogCancel);
cancelDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d(TAG, "onClick: closing the dialog");
getDialog().dismiss();
}
});
return view;
}
@Override
public void onAttach(@NonNull Context context) {
Log.d(TAG, "onAttach: Completed.");
super.onAttach(context);
try{
mOnConfirmChallengeListener = (OnConfirmChallengeListener) getTargetFragment();
}catch(ClassCastException e){
Log.e(TAG, "onAttach: ClassCastException: " + e.getMessage() );
}
}
}
Проблема, с которой я столкнулся, находится в этой строке.
mOnConfirmChallengeListener.onConfirmChallenge();
Ниже ArrayAdapter
public class MainfeedListAdapter extends ArrayAdapter<Photo> implements
ConfirmChallengeDialog.OnConfirmChallengeListener{
@Override
public void onConfirmChallenge() {
Log.d(TAG, "onConfirmChallenge: started.");
//do sth
}
public MainfeedListAdapter(@NonNull Context context, int resource, @NonNull List<Photo> objects) {
super(context, resource, objects);
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mLayoutResource = resource;
this.mContext = context;
mReference = FirebaseDatabase.getInstance().getReference();
}
@NonNull
@Override
public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
if (convertView == null){
convertView = mInflater.inflate(mLayoutResource, parent, false);
holder = new ViewHolder();
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
//........
return convertView;
}