0

我试图在按钮单击时切换图像..但我失败了并收到错误这是我的代码....请有人帮助我!如果需要,请添加 XML 代码也请发布相同的内容

package com.conn;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ViewSwitcher.ViewFactory;

public class image_slider extends Activity
{

        Integer[] imageIDs = { R.drawable.haha,  R.drawable.dte,R.drawable.new_login };
        private ImageSwitcher imageSwitcher;
        private Button nextButton;
        private Button previousButton; 

        @Override
        public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.imgslide);
            imageSwitcher.setImageResource(imageIDs[0]);
            nextButton = (Button) findViewById(R.id.next);
            nextButton.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    final Animation out= AnimationUtils.loadAnimation(this, android.R.anim.slide_out_right);       
                    final Animation in= AnimationUtils.loadAnimation(this, android.R.anim.slide_in_left);     
                    imageSwitcher = (ImageSwitcher) findViewById(R.id.switcher1);      
                    imageSwitcher.setFactory(this);   
                    imageSwitcher.setInAnimation(in);      
                    imageSwitcher.setOutAnimation(out);             
                    imageSwitcher.setImageResource(imageIDs[1]);
//                  imageSwitcher.setImageResource(imageIDs[1]);

                }

            }); 

            previousButton = (Button) findViewById(R.id.previous);
            previousButton.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    final Animation out= AnimationUtils.loadAnimation(this, android.R.anim.slide_out_left);
                    final Animation in= AnimationUtils.loadAnimation(this, android.R.anim.slide_in_right);
                    imageSwitcher.setFactory(this);
                    imageSwitcher.setInAnimation(in);
                    imageSwitcher.setOutAnimation(out);
                    imageSwitcher.setImageResource(imageIDs[0]);

                }

            });
        }
public View makeView()
    {
        ImageView imageView = new ImageView(this);
        imageView.setBackgroundColor(0xFF000000);
                imageView.setScaleType(ImageView.ScaleType.CENTER);
        imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        return imageView;
    }       

}
4

1 回答 1

1

你的问题是,当你this在你OnClickListener的指代时,你指的是那个特定的听众,而不是你当前的活动。你应该把它改成

 final Animation out= AnimationUtils.loadAnimation(image_slider.this, android.R.anim.slide_out_right); 
 final Animation in= AnimationUtils.loadAnimation(image_slider.this, android.R.anim.slide_in_left);
 ...
 imageSwitcher.setFactory(image_slider.this);

并且使用android.R.anim.slide_in_leftandroid.R.anim.slide_out_right不是 slide_out_left 和“slide_in_right”,因为它们不存在。

顺便说一句,良好的 Java 实践是以大写字母开头的类名,例如ImageSlider

于 2011-06-20T12:32:50.117 回答