Как использовать AsyncLayoutInflater с компонентом навигации и привязкой данных? - PullRequest
0 голосов
/ 22 сентября 2019

У меня сложная компоновка.Это займет несколько секунд, чтобы надуть его.Поэтому я хочу использовать класс AsyncLayoutInflater, чтобы надуть его.

public class VoicelessSoundFragment extends Fragment implements View.OnClickListener {
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Context context = getContext();
        new AsyncLayoutInflater(context)
                .inflate(R.layout.fragment_voiceless_sound, container,
                        (view, resid, parent) -> {
                            ViewDataBinding binding = DataBindingUtil.bind(view);
                            binding.setVariable(foo.bar.BR.onClickListener, this);
                            parent.removeAllViews();
                            parent.addView(binding.getRoot());
                        });
        TextView textView = new TextView(context);
        textView.setText("Loading...");
        return textView;
    }

    @Override
    public void onClick(View v) {
        MobileNavigationDirections.ActionGlobalKanaDetailFragment acton =
                MobileNavigationDirections.actionGlobalKanaDetailFragment((String) v.getTag());
        Navigation.findNavController(v).navigate(acton);
    }

}

Но я не знаю, как правильно использовать AsyncLayoutInflater с компонентом навигации и привязкой данных.Когда я нажимаю кнопку «Назад» для перехода назад, этот фрагмент перекрывает предыдущий фрагмент, а не исчезает.Также атрибут app:autoSizeTextType="uniform" Textview не работает, если я надуваю макет с помощью AsyncLayoutInflater вместо DataBindingUtil.

Домашний фрагмент:

Home Fragment

Фрагмент со сложной компоновкой (текст не имеет автоматического размера):

enter image description here

перекрываются после перехода назад:

enter image description here

...