Java startactivity创建两个实例

Java startactivity创建两个实例,java,android,start-activity,Java,Android,Start Activity,对于我的android应用程序,我使用一个按钮转到下一个活动。 问题是当我触摸屏幕上的按钮时,会创建一个活动实例,但 我使用performClick()方法以编程方式单击按钮,它将创建活动的两个实例。(performClick()是从回调方法调用的)。 我使用了CLEAR_TOP标志,但它似乎打破了后退按钮。 你知道怎么解决这个问题吗 这就是我的代码的样子: @Override protected void onCreate(Bundle savedInstanceState) {

对于我的android应用程序,我使用一个按钮转到下一个活动。 问题是当我触摸屏幕上的按钮时,会创建一个活动实例,但 我使用performClick()方法以编程方式单击按钮,它将创建活动的两个实例。(performClick()是从回调方法调用的)。 我使用了CLEAR_TOP标志,但它似乎打破了后退按钮。 你知道怎么解决这个问题吗

这就是我的代码的样子:

@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));
}
然后在按钮上单击Listener

btn.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(final View v) {
               function_name();
         }
       });
也在一个回调函数中

private void A_callback_method(){
      if (some_condition_to_launch_activity){
         function_name();
       } 
}

希望这能解决您的问题。

我通过在onResume()方法中添加一个布尔变量将其初始化为false,成功地解决了这个问题,然后执行了以下操作:

private boolean clicked_btn;
private void A_callback_method(){
      if ((some_condition_to_launch_activity)&&!clicked_btn){
          clicked_btn=true;
          btn.performClick();
       } 
}


A\u callback\u方法可以调用两次吗?这叫什么?