2011-12-31 5 views
0

Je suis le classeur Sams Teach Yourself Applications Android et j'ai rempli ce qui suit pour la classe QuizSplashActivity, comme indiqué dans le livre. Cependant, je reçois une erreur dans le code que je mets en gras * *, où il est dit AnimationListener():erreur dans la classe d'activité concernant AnimationListener

package com.androidbook.triviaquiz; 

import android.content.Intent; 
import android.os.Bundle; 
import android.view.animation.Animation; 
import android.view.animation.Animation.AnimationListener; 
import android.view.animation.AnimationUtils; 
import android.view.animation.LayoutAnimationController; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class QuizSplashActivity extends QuizActivity { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

TextView logo1 = (TextView) findViewById(R.id.textViewTopTitle); 
Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in); 
logo1.startAnimation(fade1); 

TextView logo2 = (TextView) findViewById(R.id.textViewBottomTitle); 
Animation fade3 = AnimationUtils.loadAnimation(this, R.anim.fade_in2); 
logo2.startAnimation(fade3); 

Animation spinin = AnimationUtils.loadAnimation(this, R.anim.custom_anim); 
LayoutAnimationController controller = new LayoutAnimationController(spinin); 
TableLayout table = (TableLayout) findViewById(R.id.tableLayout1); 
for (int i = 0; i < table.getChildCount(); i++) { 
    TableRow row = (TableRow) table.getChildAt(i); 
    row.setLayoutAnimation(controller); 

Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.custom_anim); 
fade2.setAnimationListener(new **AnimationListener()** { 
    public void onAnimationEnd(Animation animation) { 
     startActivity(new Intent(QuizSplashActivity.this, QuizMenuActivity.class)); 
     QuizSplashActivity.this.finish(); 
    } 
}); 
} 
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    // stop the animation 
    TextView logo1 = (TextView) findViewById(R.id.textViewTopTitle); 
    logo1.clearAnimation(); 

    TextView logo2 = (TextView) findViewById(R.id.textViewBottomTitle); 
    logo2.clearAnimation(); 

    // ... stop other animations 

    TableLayout table = (TableLayout) findViewById(R.id.tableLayout1); 
    for (int i = 0; i < table.getChildCount(); i++) { 
     TableRow row = (TableRow) table.getChildAt(i); 
     row.clearAnimation(); 
    } 
} 

}

L'erreur est:

"The type new Animation.AnimationListener(){} must implement the inherited abstract method Animation.AnimationListener.onAnimationStart(Animation) ".

Le livre ne mentionne rien à ce sujet et je me demandais si quelqu'un peut vous aider.

Merci d'avance.

Moïse

Répondre

2

AnimationListener est une interface. Cela signifie que lorsque vous le mettez dans votre code, vous devez implémenter toutes les méthodes. Comme on le voit dans le API, il existe trois méthodes:

onAnimationStart(Animation a) 
onAnimationEnd(Animation a) 
onAnimationRepeat(Animation a) 

Vous avez seulement mis en œuvre un: onAnimationEnd. Vous devez implémenter les autres, même si vous n'y mettez rien.

ici serait votre code révisé:

fade2.setAnimationListener(new AnimationListener() { 
    public void onAnimationEnd(Animation animation) { 
     startActivity(new Intent(QuizSplashActivity.this, QuizMenuActivity.class)); 
     QuizSplashActivity.this.finish(); 
    } 
    public void onAnimationStart(Animation a) { } 
    public void onAnimationRepeat(Animation a) { } 

}); 

Notez les nouvelles méthodes de la classe.

J'espère que cela a aidé!

+0

Merci pour cela ... ça a marché – user1124591

Questions connexes