Java 如何在方法中修改全局变量
我有一个android的10个按钮的动画,我需要用一个命令触发这个按钮,所以我有一个名为order的变量,如果order=1,button1可以被激活,如果order=2,button2可以被激活,依此类推。当我打开程序时,一个动画开始,然后第二个动画在第一个动画结束后重复,在这两个动画之间,我需要将变量顺序更改为1。我有下一个代码:Java 如何在方法中修改全局变量,java,android,Java,Android,我有一个android的10个按钮的动画,我需要用一个命令触发这个按钮,所以我有一个名为order的变量,如果order=1,button1可以被激活,如果order=2,button2可以被激活,依此类推。当我打开程序时,一个动画开始,然后第二个动画在第一个动画结束后重复,在这两个动画之间,我需要将变量顺序更改为1。我有下一个代码: public class Juego extends Activity { private AnimationDrawable animacion, lo
public class Juego extends Activity
{
private AnimationDrawable animacion, loop;
private MediaPlayer miPlayer;
private int order = 0;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_juego);
ImageView video = (ImageView) findViewById(R.id.secuencia);
video.setBackgroundResource(R.drawable.animation_drawable_start);
animacion = (AnimationDrawable) video.getBackground();
animacion.start();
checkIfAnimationDone0(animacion);
}
public void checkIfAnimationDone0(AnimationDrawable anim)
{
final AnimationDrawable a = anim;
int timeBetweenChecks = 20;
android.os.Handler h = new android.os.Handler();
h.postDelayed(new Runnable()
{
public void run()
{
if (a.getCurrent() != a.getFrame(a.getNumberOfFrames() - 1))
{
checkIfAnimationDone1(a);
}
else
{
ImageView video = (ImageView) findViewById(R.id.secuencia);
video.setBackgroundResource(R.drawable.animation_drawable_loop_inicio);
loop = (AnimationDrawable) video.getBackground();
loop.start();
order=1;
}
}
}, timeBetweenChecks);
};
public void onClickButton2(View any)
{
if (order == 1)
{
ImageView video = (ImageView) findViewById(R.id.secuencia);
video.setBackgroundResource(R.drawable.animation_drawable_boton_1);
animacion = (AnimationDrawable) video.getBackground();
miPlayer = MediaPlayer.create(Juego.this, R.raw.sonido_boton_1);
animacion.start();
miPlayer.start();
checkIfAnimationDone1(animacion);
order=2;
}
}
等等
问题是全局变量order的值在行序=1时没有改变,并且方法onClickButton()无法启动。如何解决此问题?在checkIfAnimationDone0()中,当
您可以转到checkIfAnimationDone1(),因此订单永远不会设置为1
将checkIfAnimationDone0()中的checkIfAnimationDone1()更改为checkIfAnimationDone0()。
顺序
不是全局变量;它是一个实例变量。
a.getCurrent() != a.getFrame(a.getNumberOfFrames() - 1)