Java 安卓按钮onClick不工作

Java 安卓按钮onClick不工作,java,android,xml,button,onclick,Java,Android,Xml,Button,Onclick,我有一个非常简单的程序,它使用MediaPLayer。我对java和xml还不熟悉,我一辈子都不明白为什么我创建的resume按钮不会响应单击事件。它确实位于一个较大的imageButton的顶部,在这种状态下不应该重复,但我认为顶层按钮应该不管,不是吗 package com.whynoceros.tonguechi; import android.app.Activity; import android.media.MediaPlayer; import android.os.Bundl

我有一个非常简单的程序,它使用MediaPLayer。我对java和xml还不熟悉,我一辈子都不明白为什么我创建的resume按钮不会响应单击事件。它确实位于一个较大的imageButton的顶部,在这种状态下不应该重复,但我认为顶层按钮应该不管,不是吗

package com.whynoceros.tonguechi;

 import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageButton;

public class ArtistsActivity extends Activity {

Button restart, resume, stop;
ImageButton play;
MediaPlayer audio;
boolean playing;
boolean paused;
boolean starting;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.tonguechi);
    audio = MediaPlayer.create(ArtistsActivity.this, R.raw.tongue_chi_mix1);

    playing = false;
    paused = false;
    starting = true;
    play = (ImageButton) findViewById(R.id.playbutton);
    stop = (Button) findViewById(R.id.stopbutton);
    resume = (Button) findViewById(R.id.resumebutton);
    restart = (Button) findViewById(R.id.restartbutton);



}
/*      play.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            audio.start();
            play.setBackgroundResource(R.drawable.pausebutton2x);
        }

    });
   */ 

public void playNow(View view) {
    if(paused){

    }

    if(playing){
        audio.pause();
        //play.setImageResource(R.drawable.playbutton2x);
        Animation slideA = AnimationUtils.loadAnimation(this, R.anim.stopani);
        stop.startAnimation(slideA);
        Animation slideB = AnimationUtils.loadAnimation(this, R.anim.resumeani);
        resume.startAnimation(slideB);
        Animation slideC = AnimationUtils.loadAnimation(this, R.anim.restartani);
        restart.startAnimation(slideC);
        playing=false;
        paused=true;
    }
    if(starting){
    audio.start();
    play.setImageResource(R.drawable.pausebutton2x);
    playing=true;
    starting=false;
    paused=false;
    Log.i("play","");


}
}

public void resumeNow(View v) {
    audio.start();
    Animation slideD = AnimationUtils.loadAnimation(this, R.anim.stopani);
    stop.startAnimation(slideD);
    Animation slideE = AnimationUtils.loadAnimation(this, R.anim.resumeani_rev);
    resume.startAnimation(slideE);
    Animation slideF = AnimationUtils.loadAnimation(this, R.anim.restartani_rev);
    restart.startAnimation(slideF);
    play.setEnabled(true);
    playing=true;
    paused=false;
    Log.i("resume","");

}

@Override
protected void onDestroy() {
    super.onDestroy();
    // TODO Auto-generated method stub
        audio.release();
    }

}





<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/playback2x"
android:orientation="vertical">

<ImageButton
    android:id="@+id/playbutton"
    android:layout_width="320dp"
    android:layout_height="131dp"
    android:layout_alignParentTop="true"
    android:layout_marginTop="34dp"
    android:scaleType="fitCenter"
    android:background="@android:color/transparent"
    android:src="@drawable/playbutton2x"
    android:contentDescription="button"
    android:onClick="playNow"/>

<Button
    android:id="@+id/resumebutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="resume" android:layout_marginTop="-60dp"
    android:onClick="resumeNow"/>

<Button
    android:id="@+id/restartbutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="restart" android:layout_marginTop="-60dp"/>

<Button
    android:id="@+id/stopbutton"
    android:layout_width="75dp"
    android:layout_height="50dp"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:text="stop" android:layout_marginTop="-60dp"/>



<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/playbutton"
    android:layout_centerHorizontal="true"
    android:src="@drawable/tips2x" />


<ScrollView
android:id="@+id/SCROLLER_ID"
android:layout_width="280dp"
android:layout_height="240dp"
android:layout_alignTop="@+id/imageView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="53dp"
android:scrollbars="vertical"
android:fillViewport="true">
    <TextView
        android:id="@+id/editText1"
        android:layout_width="280dp"
        android:layout_height="240dp"
        android:layout_alignTop="@+id/imageView2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="53dp"
        android:inputType="textMultiLine"
        android:text="@string/tips_text"
        android:textColor="#6F372D"
        android:textSize="14dp"
        android:textStyle="normal"
        android:typeface="serif" />
package com.whynoceros.tonguechi;
导入android.app.Activity;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.view;
导入android.view.animation.animation;
导入android.view.animation.AnimationUtils;
导入android.view.animation.TranslateAnimation;
导入android.widget.Button;
导入android.widget.ImageButton;
公共类艺人活动扩展活动范围{
按钮重启、恢复、停止;
图像按钮播放;
媒体播放器音频;
布尔播放;
布尔暂停;
布尔启动;
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.tonguechi);
音频=MediaPlayer.create(ArtistsActivity.this,R.raw.tangle\u chi\u mix1);
玩=假;
暂停=错误;
开始=真;
play=(图像按钮)findViewById(R.id.playbutton);
停止=(按钮)findViewById(R.id.stopbutton);
resume=(按钮)findViewById(R.id.resumebutton);
重启=(按钮)findViewById(R.id.restartbutton);
}
/*play.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
audio.start();
play.setBackgroundResource(R.drawable.pausebutton2x);
}
});
*/ 
public void playNow(视图){
如果(暂停){
}
如果(玩){
audio.pause();
//play.setImageResource(R.drawable.playbutton2x);
Animation slideA=AnimationUtils.loadAnimation(this,R.anim.stopani);
停止。启动(slideA);
Animation slideB=AnimationUtils.loadAnimation(this,R.anim.resumeani);
恢复。开始活动(幻灯片B);
Animation slideC=AnimationUtils.loadAnimation(this,R.anim.restartani);
重新启动。启动(slideC);
玩=假;
暂停=真;
}
如果(启动){
audio.start();
play.setImageResource(R.drawable.pausebutton2x);
玩=真;
开始=错误;
暂停=错误;
Log.i(“play”,“play”);
}
}
立即公开(视图五){
audio.start();
动画滑动=AnimationUtils.loadAnimation(this,R.anim.stopani);
停止。开始动画(滑动);
动画幻灯片=AnimationUtils.loadAnimation(此,R.anim.resumeani\u版本);
简历。开始活动(幻灯片);
Animation slideF=AnimationUtils.loadAnimation(此,R.anim.restartani_版本);
重新启动。开始启动(slideF);
play.setEnabled(真);
玩=真;
暂停=错误;
Log.i(“简历”);
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
//TODO自动生成的方法存根
audio.release();
}
}


android:onClick适用于API级别4以后的版本,因此如果您的目标是<1.6,那么您就不能使用它。。。相反,您应该使用onclicklistener。。我想你的目标是安卓1.5,我用以下方法解决了我自己的问题:

我用java TranslateAnimation替换了所有xml动画

我创建了两个单独的xml布局,一个用于动画之前按钮的位置,另一个用于动画之后按钮的位置。在这两种布局中,我引用了相同的按钮、ID等

每次开始动画时,我都创建了一个setAnimationListener,然后在onAnimationEnd方法中应用另一个xml布局。“setContentView(R.layout.layout2);”此外,在设置contentView之后,我必须立即重新实例化按钮,以使单击生效


现在,一旦按钮停止移动,它的实际位置将更新为其外观的最终位置,与动画相对。

Logcat输出请……。是的,您需要进行更多的调试,以便我们可以帮助您。尝试放置Toast.makeText(这是“RESUME CLICKED”,Toast.LENTH_SHORT).show();行乞时使用resumeNow方法。然而,我的猜测是,其他一些观点正在侵蚀你的水龙头。您能发布完整的XML布局(以及要求的logcat)吗?我对您的代码没有问题。(当然,我会注释掉你的一些代码)。请参阅我的最新答案。