Добавить фрагмент к фрагменту - PullRequest
1 голос
/ 11 марта 2019

Я новичок в разработке для Android. Я создал Fragment, который содержит виды, кнопки, ограничения и т. Д. Я назвал его fragment_code_activation_circles. Теперь я хочу добавить его в новый фрагмент, то есть предположить, что он «главный» и содержит все другие фрагменты, которые я создал, и я хочу установить для него ограничения, но я не знаю, как его добавить. С обычной паллеты я пытался перетащить {}<fragment> на экран на вкладке «Дизайн», но безуспешно. Это возможно или, вероятно, я делаю то, что я не должен делать? В iOS вы можете просто добавить любого потомка класса View в родительское представление и легко установить его ограничения.

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Вы не можете помещать активность внутри фрагмента - фрагменты предназначены только для размещения внутри действия.
Вы можете поместить в свою деятельность столько фрагментов, сколько хотите, но вы не можете поместить свою деятельность внутри фрагмента.Думайте о фрагменте как о мини-деятельности, которая может быть помещена в активность.

Из документации :

Вы можете думать о фрагменте как о модульном разделедействия, которое имеет собственный жизненный цикл, получает свои собственные входные события, которые вы можете добавлять или удалять во время выполнения действия (что-то вроде «вспомогательного действия», которое вы можете повторно использовать в различных действиях).

Теперь, если вы хотите иметь 1 экран, содержащий фрагменты, вам нужно будет создать 1 действие, поместите свои фрагменты внутрь и замените их, когда захотите.
Для достижения этой цели используйте новый Компонент навигационной архитектуры .

0 голосов
/ 11 марта 2019

Проверьте эту ссылку Динамически добавляйте фрагмент во фрагмент

Кроме того, вы можете рассмотреть возможность использования настраиваемого представления вместо вложенных фрагментов, это делает вещи более пригодными для повторного использования.


class YourCustomView extends FrameLayout {
    public YourCustomView(@NonNull Context context) {
        super(context);
        init();
    }

    public YourCustomView(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public YourCustomView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init(){
        LayoutInflater.from(getContext()).inflate(R.layout.your_layour,this);
    }
}

Тогда вы можете просто получить представления в вашем макете, вызвав findViewById() в вашем собственном представлении

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...