Не удалось найти метод в контексте родителя или предка

Я занимался этой проблемой некоторое время и рассмотрел все соответствующие вопросы, которые я мог найти, такие как:этот, этот, а такжеэтот, Не могли бы вы помочь мне исправить эту ошибку? Это единственный, кого бросает 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'

Соответствующий код:

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>
 McLemore15 июл. 2016 г., 11:29
Это все вradio_activity
 McLemore15 июл. 2016 г., 11:33
Оно вradio_activity, Это кнопка ImageButton.
 Janki Gadhiya15 июл. 2016 г., 11:31
Могу ли я увидеть код, где вы вызываете этот методplayPauseMusic ??вызывается, когда пользователь касается кнопки Могу ли я увидеть этот код кнопки?

Ответы на вопрос(2)

Ваш код, возможно, должен начинаться с:

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

Вы указываете onClick в xml

android:onClick="playPauseMusic"

Итак, метод работает, у вас также есть внутренние onClicks. Если они какие-то взгляды.

Вы должны инициализировать и получить его из XML-кода, например,

Если у вас есть ImageButton в xml, идентификатор которого «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
        }
    });
}

В вашем случае у вас есть атрибут onClick в xml и другой onCLick в коде. Вы используете один.

 JMASTER B26 сент. 2018 г., 17:45
Если вы используете фрагмент ... это хорошо!
Решение Вопроса

onClick вxml означает, что вам нужно определить его для конкретного вида здесьImageButton Вы не можете иметь два аргумента в этом методе.

Ваша ошибка также говорит, чтоНе удалось найти метод playPauseMusic (View) означает, что компилятору нужны методы с одним параметромView где у вас было два параметраView & ImageButton это причина, почему вы получили эту ошибку. Просто удалите один аргумент из метода, и он будет работать.

Сделай это так :

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);
}
}

Еще одна вещь, пишущаяandroid:onClick="playPauseMusic" означает методplayPauseMusic будет вызываться при нажатии кнопки, поэтому вы уже определили нажатие кнопки, такнет необходимости определять его внутри метода отplayPause.setOnClickListener поэтому я удалил этот код.

 McLemore15 июл. 2016 г., 11:53
Это все еще выдает ту же ошибку.
 Janki Gadhiya15 июл. 2016 г., 11:59
Вот((ImageButton)playPause).setImageResource(R.drawable.play1); я добавил актерский составImageButton попытайся
 McLemore15 июл. 2016 г., 11:49
Я не видел этого, когда я сделал комментарий. Я жду на сборке. РЕДАКТИРОВАТЬ: Да, ошибка выше все еще выдается.
 Janki Gadhiya15 июл. 2016 г., 11:47
Вы уверены, что удалилиplayPause.setOnClickListener в сторону метод такой же, как я сделал в приведенном выше коде ?? пожалуйста скопируйте и вставьте приведенный выше код и скажите мне, если проблема все еще сохраняется .. !!
 Janki Gadhiya15 июл. 2016 г., 11:50
пожалуйста, удалитеthrows IOException.. !! Смотрите мои изменения .. !!
 McLemore15 июл. 2016 г., 11:46
Выдает ошибкуplayPause должен быть объявлен окончательным. Я это сделал,final View playPause и теперь я получаю ошибку сборки:Error:(39, 30) error: cannot find symbol method setImageResource(int), Какие-либо предложения?
 McLemore15 июл. 2016 г., 11:58
Я верю, что нашел ответ. Я забыл разыграть playPause как ImageButton.

Ваш ответ на вопрос