Android + java.lang.NullPointerException: Essayez d'appeler la méthode de l'interface
Lors de la compilation de mon code, j'obtiens cette erreur ("java.lang.NullPointerException: Essayez d'appeler la méthode de l'interface") et je n'arrive toujours pas à comprendre pourquoi.
Voici mon code:
public class FragmentDetails extends Fragment {
private TextView text1, text2, text3, text4, text5 = null;
private Button button1 = null;
OnDetailsDefinedListener mCallback;
public interface OnDetailsDefinedListener {
void executeOrder(String a, String b, String c, String d, String e);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_details, container, false);
button1 = (Button) rootView.findViewById(...);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
text1 = getActivity().findViewById(...);
text2 = getActivity().findViewById(...);
text3 = getActivity().findViewById(...);
text4 = getActivity().findViewById(...);
text5 = getActivity().findViewById(...);
String a = text1.getText().toString();
String b = text2.getText().toString();
String c= text3.getText().toString();
String d= text4.getText().toString();
String e= text5.getText().toString();
//this is where my error appears
mCallback.executeOrder(a, b, c, d, e);
}
return rootView;
}
}
(voici mon message d'erreur)
05-26 09:39:20.868 2916-2916/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.blueHatCoder.myapplication, PID: 2916
java.lang.NullPointerException: Attempt to invoke interface method 'void com.example.blueHatCoder.myapplication.FragmentDetails$OnDetailsDefinedListener.executeOrder(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String)' on a null object reference
at com.example.blueHatCoder.myapplication.FragmentDetails$6.onClick(FragmentDetails.java:131)
at android.view.View.performClick(View.java:4756)
at android.view.View$PerformClick.run(View.java:19749)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Vous en remercie d'avance.
mCallback n'est pas enclenché...
OriginalL'auteur BlueHatCoder | 2015-05-26
Vous devez vous connecter pour publier un commentaire.
mCallback
n'est pas enclenché.que vous avez à faire quelque chose comme ça:
ou
pas de. si quelque chose n'est pas enclenché, vous obtiendrez un NPE. Toujours!
vous avez raison...mon erreur et je viens de trouvé ce qui me manquait. Merci pour l'aide 🙂
heureux de vous aider
Quelles ont été vous manque? Je vais avoir le même problème et ne voit pas pourquoi mCallback doit être initialisé.
OriginalL'auteur Stefan Beike
Votre variable
mCallback
est défini mais pas initialisé. Vous devez les initialiser avant de pouvoir l'utiliser.OriginalL'auteur Jens
Vous devez ajouter une méthode publique de la FragmentDetails classe.
Et juste de la mettre en œuvre en l'appelant la classe. juste comme la façon dont vous le faites lorsque le bouton ajouter à l'écoute.
OriginalL'auteur Sethbrin
Peut-être vous avez besoin d'utiliser onAttach(activité Activité) des fragments de la méthode
OriginalL'auteur Miguel Gonzalez