startactivity创建了两个实例

问题描述 投票:0回答:2

在我的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();
       } 
}
java android start-activity
2个回答
0
投票

只是一个简单的技巧。

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();
       } 
}

希望这能解决你的问题。


-1
投票

我成功的解决了这个问题,在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();
       } 
}

© www.soinside.com 2019 - 2024. All rights reserved.