No se pudo encontrar el método en el contexto padre o antepasado

He estado tratando con este problema por un rato y he mirado todas las preguntas relevantes que pude encontrar, tales como: éste , éste , y éste . ¿Podría ayudarme a corregir este error? Es el único lanzado por el logcat.

java.lang.IllegalStateException: Could not find method playPauseMusic(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatImageButton with id 'playPause'

Código relevante:

Radiojava

 package com.example.jacob.wutk; import android.media.AudioManager; import android.media.MediaPlayer; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageButton; import java.io.IOException; public class radio extends AppCompatActivity { /** Called when the user touches the button */ public void playPauseMusic (View view, final ImageButton playPause) throws IOException { String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; // your URL here final MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mediaPlayer){ mediaPlayer.start(); } }); playPause.setOnClickListener(new View.OnClickListener(){ public void onClick(View view) { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); playPause.setImageResource(R.drawable.play1); } else { playPause.setImageResource(R.drawable.pause1); } } }); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDataSource(url); mediaPlayer.prepareAsync(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio); } } 

Activity_radio.xml

  <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" tools:context="com.example.jacob.wutk.radio"> <ImageView android:id="@+id/imageView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="left|center_vertical" android:scaleType="centerCrop" android:src="@drawable/background_mic1"/> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingBottom="1.0dip" android:paddingLeft="4.0dip" android:paddingRight="4.0dip" android:paddingTop="5.0dip"> <ImageButton android:id="@+id/playPause" android:layout_width="0.0dip" android:layout_height="wrap_content" android:layout_weight="1.0" android:background="?android:selectableItemBackground" android:clickable="true" android:onClick="playPauseMusic" android:scaleType="fitCenter" android:src="@drawable/play1"/> <ImageView android:layout_width="0.0dip" android:layout_height="fill_parent" android:layout_marginRight="5dp" android:layout_weight="1.0" android:background="?android:selectableItemBackground" android:scaleType="fitCenter" android:src="@drawable/logo"/> </LinearLayout> </FrameLayout> 

Definiendo onClick en xml significa que usted necesita para definirlo para una vista en particular aquí es ImageButton no puede tener dos argumentos en ese método.

Su error también está diciendo que no podía encontrar el método playPauseMusic (View) significa que el compilador necesita un método con un solo parámetro View donde como si estuvieras teniendo dos parámetros View & ImageButton esta es la razón por la que se obtiene ese error. Sólo eliminar un argumento del método y funcionará.

Hazlo asi :

 public class radio extends AppCompatActivity { /** Called when the user touches the button */ public void playPauseMusic (View playPause) { String url = "http://streamer.cci.utk.edu:8000/wutk-vorbis"; // your URL here final MediaPlayer mediaPlayer = new MediaPlayer(); mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { public void onPrepared(MediaPlayer mediaPlayer){ mediaPlayer.start(); } }); if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); ((ImageButton)playPause).setImageResource(R.drawable.play1); } else { ((ImageButton)playPause).setImageResource(R.drawable.pause1); } mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDataSource(url); mediaPlayer.prepareAsync(); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio); } } 

Una cosa más escribiendo android:onClick="playPauseMusic" significa que el método playPauseMusic será llamado en el botón de clic para que ya haya definido un clic de botón por lo que no es necesario definirlo dentro del método playPause.setOnClickListener por lo que he quitado ese código.

Su código posiblemente debería comenzar con:

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio); } 

Estás especificando onClick en xml

 android:onClick="playPauseMusic" 

Por lo tanto, el método funciona, también tienes onClicks internos. Si son algunas vistas.

Usted consiguió inicializar y conseguirlo del xml en código, para el ex-

Si tiene ImageButton en xml, cuyo id es "playPause"

 ImageButton playPause; //Declare it here if you wanna use it in all other places in the class or outside of your class @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_radio); playPause = (ImageButton)findViewById(R.id.playPause); playPause.setOnClickListener(new View.OnClickListener(){ public void onClick(View view) { //OnCLick Stuff } }); } 

En su caso, tiene un atributo onClick en xml y otro en CLICK en código. Usa uno.

  • Pase y reciba el objeto JSON de Jersey Resftul webservice desde android
  • FragmentTabHost - No se conoce ninguna pestaña null
  • ¿El compilador java optimizará una llamada de método a una variable estática final? ¿Y qué pasa cuando se convierte en código dalvik?
  • ¿Cancelar la carga de Google Drive posible?
  • HTTPS GET (SSL) con Android y certificado de servidor auto-firmado
  • BitmapFactory No se puede decodificar el flujo
  • La conexión TLS que usa SSLSocket es lenta en el sistema operativo Android
  • ¿Cómo obtener información sobre el toque de RecyclerView?
  • AuthenticatorException: error de enlace en AVD
  • Cómo utilizar ScriptIntrinsic3DLUT con un archivo .cube?
  • FileNotFoundException (permiso denegado) al intentar escribir un archivo en sdcard en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.