Could not find method in parent or ancestor context

我怕爱的太早我们不能终老 提交于 2019-11-27 13:10:30
Janki Gadhiya

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 methods with single parameter View where as 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.

Your code possibly should start with:

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

You're specifying onClick in xml

android:onClick="playPauseMusic"

So, the method works, you've got inner onClicks too. If they are some views.

You gotta initialize and get it from the xml in code, for ex-

If you have ImageButton in xml, whose id is "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
        }
    });
}

In Your case, you've got onClick attribute in xml and another onCLick in code. You Use one.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!