Java 在父或父上下文中找不到方法

Java 在父或父上下文中找不到方法,java,android,illegalstateexception,Java,Android,Illegalstateexception,我处理这个问题已经有一段时间了,并且已经研究了我能找到的所有相关问题,例如:,和。你能帮我纠正这个错误吗?这是唯一一个被logcat扔下的 java.lang.IllegalStateException:在父级或子级中找不到方法playPauseMusic(视图) android的祖先上下文:视图类上定义的onClick属性 id为“playPause”的android.support.v7.widget.AppCompatImageButton 相关代码: radio.java packag

我处理这个问题已经有一段时间了,并且已经研究了我能找到的所有相关问题,例如:,和。你能帮我纠正这个错误吗?这是唯一一个被logcat扔下的

java.lang.IllegalStateException:在父级或子级中找不到方法playPauseMusic(视图)
android的祖先上下文:视图类上定义的onClick属性
id为“playPause”的android.support.v7.widget.AppCompatImageButton
相关代码:

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);
    }
}
活动\u 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>

您的代码可能应该以以下内容开头:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_radio);
}
您正在xml中指定onClick

android:onClick="playPauseMusic"
所以,这个方法是有效的,你也有内部的onclick。如果他们有一些观点

例如,您必须初始化并从代码中的xml获取它-

如果您有xml格式的ImageButton,其id为“playPause”


在您的例子中,xml中有onClick属性,代码中有另一个onClick属性。你用一个

您的代码可能应该以以下内容开头:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_radio);
}
您正在xml中指定onClick

android:onClick="playPauseMusic"
所以,这个方法是有效的,你也有内部的onclick。如果他们有一些观点

例如,您必须初始化并从代码中的xml获取它-

如果您有xml格式的ImageButton,其id为“playPause”


在您的例子中,xml中有onClick属性,代码中有另一个onClick属性。你用一个

xml
中定义
onClick
意味着您需要为特定视图定义它这里是
ImageButton
您不能在该方法中有两个参数

您的错误还表示,无法找到方法playPauseMusic(View)意味着编译器需要一个带有单个参数的公共方法
视图
,而您有两个参数:
视图
&
图像按钮

这就是为什么你会犯这样的错误。只要从方法中删除一个参数,它就会工作

这样做:

public class radio活动{
/**当用户触摸按钮时调用*/
公共无效播放暂停(查看播放暂停){
字符串url=”http://streamer.cci.utk.edu:8000/wutk-vorbis“//您的URL在这里
最终MediaPlayer=新MediaPlayer();
mediaPlayer.setOnPreparedListener(新的mediaPlayer.OnPreparedListener(){
已准备好公开作废(MediaPlayer MediaPlayer){
mediaPlayer.start();
}
});
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
((ImageButton)播放暂停).setImageResource(R.drawable.play1);
}否则{
((ImageButton)playPause.setImageResource(R.drawable.pause1);
}
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radio);
}
}

还有一件事要做:编写android:onClick=“playPauseMusic”表示方法
playPauseMusic
将在按钮单击时调用,因此您已经定义了按钮单击,因此无需通过
playPause在方法内部定义它。setOnClickListener
因此我已删除该代码。

xml
中定义
onClick
表示您需要为这里的特定视图是
ImageButton
,该方法中不能有两个参数

您的错误还表示,无法找到方法playPauseMusic(View)意味着编译器需要一个带有单个参数的公共方法
视图
,而您有两个参数:
视图
&
图像按钮

这就是为什么你会犯这样的错误。只要从方法中删除一个参数,它就会工作

这样做:

public class radio活动{
/**当用户触摸按钮时调用*/
公共无效播放暂停(查看播放暂停){
字符串url=”http://streamer.cci.utk.edu:8000/wutk-vorbis“//您的URL在这里
最终MediaPlayer=新MediaPlayer();
mediaPlayer.setOnPreparedListener(新的mediaPlayer.OnPreparedListener(){
已准备好公开作废(MediaPlayer MediaPlayer){
mediaPlayer.start();
}
});
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
((ImageButton)播放暂停).setImageResource(R.drawable.play1);
}否则{
((ImageButton)playPause.setImageResource(R.drawable.pause1);
}
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepareAsync();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_radio);
}
}

还有一件事要做:编写android:onClick=“playPauseMusic”表示方法
playPauseMusic
将在按钮单击时调用,因此您已经定义了按钮单击,因此无需通过
playPause.setOnClickListener在方法中定义它。因此,我已删除该代码。

这就是
单选活动中的所有内容
我可以在您所在的位置查看代码吗调用此方法
playPauseMusic
??当用户触摸按钮时调用?我可以看到按钮代码吗?它在
单选活动中
。这是ImageButton。这是
单选活动中的所有内容
我可以看到调用此方法的代码吗
playPauseMusic
??当用户触摸按钮时调用?我可以看到按钮代码吗?它在
单选活动中
。这是Imag