J'utilise la méthode onClick de la vue .xml pour intercepter les événements click sur ma classe .java.android: onClick = "" provoque IllegalStateException
Fonctionne généralement bien. Mais quand mon activité est en cours d'exécution sur fond pendant longtemps, viendra plus tard à thread principal et quelqu'un clique sur la vue, il retourne l'exception suivante:
java.lang.NullPointerException
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3608)
at android.view.View.performClick(View.java:4101)
at android.view.View$PerformClick.run(View.java:17087)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
Voici mon view.xml:
<ToggleButton
android:id="@+id/fragment_main_colonies_tbFollow"
android:layout_width="match_parent"
android:layout_height="40dp"
android:checked="false"
android:onClick="onClickToggleColonyFollow"
android:textOff="@string/main_colony_follow"
android:textOn="@string/main_colony_follow" />
Et voici mon fragment.java:
public void onClickToggleColonyFollow(View view) {
ToggleButton near = (ToggleButton)getView().findViewById(R.id.fragment_main_colonies_tbNear);
ToggleButton follow = (ToggleButton) view;
if(follow == null || near == null) return;
if(!near.isChecked() && !follow.isChecked()) {
follow.setChecked(true);
return;
}
near.setChecked(false);
showColoniesNear = false;
}
Qu'est-ce que je fais mal? Lorsque vous utilisez l'attribut , il essaie de trouver la méthode via la réflexion.
'ToggleButton près = (ToggleButton) getView(). FindViewById (R.id.fragment_main_colonies_tbNear);' Pourquoi getView ?? – Raghunandan
@Raghunandan parce que c'est un fragment. – Karakuri
Ensuite, 'public void onClickToggleColonyFollow (Voir la vue)' doit être dans Activité non fragment – Raghunandan