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
相关产品推荐
相关产品推荐

