在我的android应用程序中,我使用一个按钮来进入下一个Activity.问题是当我在屏幕上触摸按钮时,创建了一个Activity的实例,但是当我使用 performClick()方法以编程方式点击按钮时,它创建了两个Activity的实例。我使用了CLEAR_TOP FLAG,但它似乎破坏了后面的按钮。有什么办法可以解决这个问题吗?
这是我的代码看起来像什么。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn = (Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
startActivity(new Intent(Activity1.this, Activity2.class));
}
});
}
private void A_callback_method(){
if (some_condition_to_launch_activity){
btn.performClick();
}
}
只是一个简单的技巧。
private void function_name(){
startActivity(new Intent(Activity1.this, Activity2.class));
}
然后在onClickListener按钮上
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
function_name();
}
});
也在A_callback_method里面。
private void A_callback_method(){
if (some_condition_to_launch_activity){
function_name();
}
}
希望这能解决你的问题。
我成功的解决了这个问题,在onResume()方法中增加了一个布尔变量intialise为false,然后做了如下操作。
private boolean clicked_btn;
private void A_callback_method(){
if ((some_condition_to_launch_activity)&&!clicked_btn){
clicked_btn=true;
btn.performClick();
}
}