При возврате к предыдущему фрагменту внутри onCreateView срабатывает кнопка onClick()

#android #android-fragments #fragment

Вопрос:

У меня есть два фрагмента, A и B.

Из фрагмента A вызов фрагмента B:

 B nextFrag = new B();
nextFrag.setArguments(bundleobj);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.nav_host_fragment, nextFrag); 
transaction.addToBackStack(null);  
transaction.commit();
 

Фрагмент B, когда пользователь нажимает кнопку «Назад»:

 FragmentManager fm = getFragmentManager();
fm.popBackStackImmediate();
 

Но затем загружается фрагмент A, вызывается onCreateView, и внутри onCreateView у меня есть кнопка:

 doSomethingBtn..setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View view) {
}
});
 

Проблема здесь в том, что onClick запускается при возврате к фрагменту A.

Как это предотвратить?

Ответ №1:

Вместо добавления вложенной OnClickListener ссылки на кнопку реализуйте ее в своем классе и переопределите метод, чтобы включить случай переключения на основе идентификатора щелкнутого представления. Не забудьте изменить свою кнопку на doSomethingBtn.setOnClickListener(this); и посмотреть, исправит ли это проблему для вас. Если нет, нам, вероятно, потребуется больше фрагментов из вашего фактического кода, чтобы найти причину.