2012-03-09 4 views
0

J'ai un programme très simple qui utilise MediaPLayer. Je suis nouveau à Java et xml et pour la vie de moi ne peut pas comprendre pourquoi le bouton de reprise que j'ai créé ne répondra pas à un événement de clic. Il est assis sur un imageButton plus grand, qui ne devrait pas repsond dans cet état, mais je pense que le bouton de haut niveau devrait indépendamment, non?Android bouton onClick ne fonctionne pas

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" /> 

+0

Logcat sortie pls ....... –

+0

Oui, vous devez faire un peu plus de débogage afin que nous puissions vous aider. Essayez de mettre un Toast.makeText (ceci, "RESUME CLICKED", Toast.LENTH_SHORT) .show(); ligne à la demande de la méthode resumeNow. Je suppose, cependant, qu'une autre vue est de manger vos robinets. Pouvez-vous poster votre mise en page XML complète (et le logcat comme demandé)? – dcow

+0

Je n'ai aucun problème avec votre code. (bien sûr, je commente certains de vos codes). Voir ma réponse mise à jour. – PhatHV

Répondre

0

j'ai réussi à résoudre mon problème en utilisant l'approche suivante:

Je remplacé tout l'esprit d'animation xml h java TraduireAnimation.

J'ai créé deux mises en page XML distinctes, l'une pour la position des boutons avant l'animation, l'autre pour l'après. Dans les deux mises en page, je référence les mêmes boutons, ids, etc ...

J'ai créé un setAnimationListener chaque fois que j'ai commencé une animation, puis dans la méthode onAnimationEnd, j'applique l'autre mise en page xml. "setContentView (R.layout.layout2);" De plus, immédiatement après la définition de contentView, j'ai dû ré-instancier les boutons pour que le clic fonctionne.

Maintenant, une fois que le bouton s'arrête de bouger, son emplacement actuel est mis à jour à l'emplacement final de son apparence, vis-à-vis de l'animation.

1

android: onClick est pour le niveau de l'API 4 partir, donc si vous ciblez < 1.6, vous ne pouvez pas l'utiliser ... au lieu que vous devez utiliser onclicklistener. . Je pense que vous ciblez Android 1.5

+0

Non, je vise 2+, mais merci. – Fluffhead