Вам нужно использовать FragmentManager и FragmentTransaction, чтобы добавить свой фрагмент на лету.Вы можете вызвать функцию, подобную этой, в методе onClick вашей кнопки.Но рекомендуется, чтобы родительское действие обрабатывало жизненный цикл каждого фрагмента, а фрагменты не должны взаимодействовать друг с другом.Следующая информация взята из документации разработчика , которую можно найти здесь .«Часто вы хотите, чтобы один фрагмент связывался с другим, например, чтобы изменить содержимое на основе пользовательского события. Вся связь фрагмента с фрагментом осуществляется либо через общую модель представления, либо через связанную деятельность. Два фрагмента никогда не должны связываться напрямую».. "
fun createFragmentonTheFly(){
var mFragmentTransaction: FragmentTransaction = getSupportFragmentManager().beginTransaction()
mFragmentTransaction.add(R.id.fr_container,new ProductListFragment())
mFragmentTransaction.commit()
}
Лучший способ сделать это - добавить интерфейс, скажем, onFragmentDetachedLisetner, добавить один метод replaceFragment () или что-то в этом роде и заставить вашу Activity реализовать этот интерфейс и заставить его заменить, как толькоФрагмент отсоединен, и ваш фрагмент, содержащий вашу кнопку, завершает сам себя, когда пользователь нажимает кнопку, тогда ваша деятельность заменит ее той, которую вы хотели запустить.А также рассмотрите возможность повторного использования фрагментов, так как это основное назначение фрагментов в первую очередь.