I've been dealing with this problem for awhile and have looked at all the relevant questions I could find, such as: this one, this one, and this one. Could you help me correct this error? It's the only one being thrown by the 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' Relevant code:
radio.java
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> Defining onClick in xml means you need to define it for a particular view here is ImageButton you can not have two arguments in that method.
Your error is also saying that Could not find method playPauseMusic(View) means compiler needs a public method with single parameter View, whereas you were having two parameters: View & ImageButton.
This is the reason why you where getting that error. Just remove one argument from the method and it will work.
Do it like this :
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);     } } One more thing writing android:onClick="playPauseMusic" means the method playPauseMusic will be called on Button click so you have already defined a button click so no need to define it inside the method by playPause.setOnClickListener so I have removed that code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With