Android按钮onClick无法正常工作

时间:2012-03-09 06:01:25

标签: java android xml button onclick

我有一个非常简单的程序,它使用MediaPLayer。我是java和xml的新手,对于我的生活,我无法弄清楚为什么我创建的简历按钮不会响应点击事件。它确实位于一个更大的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" />

2 个答案:

答案 0 :(得分:1)

android:onClick适用于API级别4以上,因此如果你的目标是&lt; 1.6,然后你不能使用它...而你应该使用onclicklistener ..我认为你的目标是Android 1.5

答案 1 :(得分:0)

我设法使用以下方法解决了我自己的问题:

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

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

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

现在,一旦按钮停止移动,它的实际位置会更新到它的外观的最终位置,相对于动画。