NoSuchMethodException: onClick in Fragment

Sólo vagando por qué el siguiente código aparece con un mensaje "NoSuchMethodException: onPrefImageClick [class android.view.View]".

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mView = inflater.inflate(R.layout.pref_detail_fragment, container, false); return mView; } // onCreateView() public void onPrefImageClick(final View clickedView) { switch(clickedView.getId()) { case R.id.prefDetailImage: Log.i(TAG, "Clicked on the image"); break; case R.id.prefDetailText: Log.i(TAG, "Clicked on the text"); break; default: Log.i(TAG, "Clicked some where"); } } // onPrefImageClick() 

con

  android:onClick="onPrefImageClick" 

presente en el xml.

Y este código:

  @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View mView = inflater.inflate(R.layout.pref_detail_fragment, container, false); final ImageView imgView = (ImageView) mView.findViewById(R.id.prefDetailImage); imgView.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { Log.i(TAG, "Clicked on the image"); // Perform action on click } }); return mView; } // onCreateView() 

Mientras que con la línea de xml y el método onPrefImageClick () eliminado;

funciona muy bien.

¿Puede / alguien explicará por favor?

Debe poner el onPrefImageClick en la actividad que aloja los fragmentos. Esto es porque, Android buscará el método en la actividad no en el fragmento. Android no sabe a ciencia cierta, que Fragmento es actualmente y por lo tanto, se ve en la actividad.

Sólo eliminar el final y poner este método en la actividad del fragmento y no el fragmento en sí!

¡Espero eso ayude!

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.