startactivity создает два экземпляра - PullRequest
0 голосов
/ 26 мая 2020

для моего приложения android, я использую кнопку go для перехода к следующему действию. проблема в том, что когда я нажимаю кнопку на экране, создается один экземпляр действия, но когда я использую метод 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();
       } 
}

Ответы [ 2 ]

0 голосов
/ 27 мая 2020

Мне удалось обойти эту проблему, добавив логическую переменную, инициализирующую ее в false в методе onResume (), а затем сделал следующее:

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

0 голосов
/ 26 мая 2020

Просто трюк. создать функцию

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

надеюсь, что это решит ваши проблемы.

...