有两个按钮,按钮 A 使用简单的 Activity.startActivity() 方法在其 onClickListener 中启动另一个 Activity ,按钮 B 在其 onClickListener 中执行一些其他工作。
当我单击按钮 B 并在按钮 A 之后立即启动时,新 Activity 启动,旧 Activity 的 onPause() 生命周期事件被触发,第二个按钮的 onClick 事件也被触发,但在 Activity.onPause() 之后导致我的应用程序中存在一些状态不一致。
有什么方法可以防止在不使用 isPaused 标志的情况下在 onPause() 之后传递触摸/点击事件?
**编辑:**我的代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button buttonA = (Button) findViewById(R.id.activity_button);
buttonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this, TestActivity.class));
}
});
Button buttonB = (Button) findViewById(R.id.log_button);
buttonB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("TEST", "onClick");
}
});
}
@Override
protected void onPause() {
super.onPause();
Log.e("TEST", "onPause");
}
}
基本上,如果您足够快并在按钮 A 之后立即单击按钮 B,则 B 的 onClick 在 onPause 之后触发。
最佳答案
在按钮A的OnClickListener中,禁用按钮b。
Button.setEnabled(false);
只需根据您的要求在 A 的 onClickListener 或 onResume 处启用按钮即可。
关于Android:Activity.onPause() 之后的点击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38368391/