Konnte nicht finden, die Methode in der parent-oder ancestor-Kontext
Ich habe den Umgang mit diesem problem für eine Weile und habe mir alle relevanten Fragen, die ich finden konnte, wie zum Beispiel: diese eine, diese eine, und diese eine. Könnten Sie mir helfen, diesen Fehler beheben? Es ist die einzige, die ausgelöst wird, durch die 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'
Relevante 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>
Das ist alles in
kann ich sehen, den code, wo du den Aufruf dieser Methode
Es ist in
radio_activity
kann ich sehen, den code, wo du den Aufruf dieser Methode
playPauseMusic
?? aufgerufen wird, wenn der Benutzer berührt die Taste kann ich sehen, dass button code ??Es ist in
radio_activity
. Es ist die ImageButton.InformationsquelleAutor McLemore | 2016-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Definieren
onClick
imxml
bedeutet, dass Sie brauchen, um zu definieren, es für eine bestimmte Ansicht hier istImageButton
Sie können nicht zwei Argumente, die in dieser Methode.Ihre Fehler auch sagen, dass nicht finden Konnte-Methode playPauseMusic(View) bedeutet compiler braucht Methoden mit Einzel-parameter
View
wo, wie Sie waren mit zwei ParameternView
&ImageButton
dies ist der Grund, warum Sie, wo immer dieser Fehler. Entfernen Sie einfach ein argument, das von der Methode und es wird funktionieren.Machen Sie es wie diese :
Eins noch schreiben
android:onClick="playPauseMusic"
bedeutet, dass die MethodeplayPauseMusic
aufgerufen wird, auf den Button klicken, so dass Sie bereits definiert haben klicken auf eine Schaltfläche, so keine Notwendigkeit, Sie zu definieren, innerhalb der Methode vonplayPause.setOnClickListener
so habe ich entnommen, dass code.playPause
deklariert werden müssen, endgültig. Ich wusste, dassfinal View playPause
und jetzt bekomme ich einen Build-Fehler:Error:(39, 30) error: cannot find symbol method setImageResource(int)
. Irgendwelche Vorschläge?sind Sie sicher, dass Sie entfernt
playPause.setOnClickListener
Seite in der Methode gleiche wie ich getan haben, im obigen code ?? bitte kopieren und fügen Sie den obigen code und mir sagen, ob das problem noch besteht..!!Ich hatte nicht gesehen, dass, wenn ich aus dem Kommentar. Ich warte auf das bauen. EDIT: ja der Fehler oben ist noch geworfen.
bitte entfernen Sie
throws IOException
..!! Siehe mein edit..!!Es immer noch wirft den gleichen Fehler.
InformationsquelleAutor Janki Gadhiya
Ihren code vielleicht sollte beginnen mit:
Du bist der Angabe von onClick im xml -
So, die Methode funktioniert, hast du innere onClicks zu. Wenn Sie einige Ansichten.
Du musst Sie initialisieren und bekommen es von der xml-Code in code, für ex-
Wenn Sie ImageButton in xml, dessen id ist "playPause"
In Deinem Fall, du hast onClick-Attribut in xml-und anderen onCLick-in-code. Sie Verwenden ein.
InformationsquelleAutor johnrao07