You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android按钮OnClick点击事件异常:第二次点击无法跳转Activity

问题分析与解决方案

问题根源

你的代码里,变量i初始值为0,第一次点击时执行图片切换逻辑,但没有对i做任何修改。这导致后续每次点击时i依然是0,永远只会执行图片切换,不会进入跳转Activity的分支。

修正方案

方案1:更新计数变量

把静态变量改为Activity的成员变量(避免静态变量引发的内存泄漏或状态异常问题),并在第一次点击后更新变量值:

// 改为成员变量,不要用static
private int clickCount = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout); // 替换为你的布局ID

    final ImageView srt = findViewById(R.id.imageone);
    Button apply = findViewById(R.id.apply);
    apply.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            vibrator.vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE));
            
            if(clickCount == 0){
                srt.setImageResource(R.drawable.imagetwo);
                clickCount = 1; // 关键:更新计数,让下一次点击进入跳转分支
            }else{
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
                // 可选:返回当前页面后重置状态,再次点击重新切换图片
                // clickCount = 0;
            }
        }
    });
}

方案2:用布尔变量标记状态(逻辑更清晰)

如果只需要区分两种状态,用布尔变量比计数更直观:

private boolean isImageSwitched = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.your_layout);

    final ImageView srt = findViewById(R.id.imageone);
    Button apply = findViewById(R.id.apply);
    apply.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            vibrator.vibrate(VibrationEffect.createOneShot(50, VibrationEffect.DEFAULT_AMPLITUDE));
            
            if(!isImageSwitched){
                srt.setImageResource(R.drawable.imagetwo);
                isImageSwitched = true;
            }else{
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
                // 可选:返回当前页面后重置状态
                // isImageSwitched = false;
            }
        }
    });
}

额外注意事项

  • 确保SecondActivity已在AndroidManifest.xml中注册,否则会跳转失败:
    <activity android:name=".SecondActivity" />
    
  • 避免用静态变量存储界面状态,Activity销毁重建时静态变量不会自动重置,容易引发逻辑异常。

内容的提问来源于stack exchange,提问作者Emma.bk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 10:25:38