редактировать:
Дело в том, что вы делаете огромный беспорядок, и нет никаких причин, почему вы делаете это.
Что происходит там, что вы раздувать корень, но не прикрепить его к контейнеру с этой линией View root = inflater.inflate(R.layout.list_fragment, container, false);
Тогда вы надуть два представления и добавить их непосредственно в контейнер с этими линиями a = inflater.inflate(R.layout.empty_list_view, container);
, которая является неправильной вещью сделать в соответствии фрагмент документации:
фрагмент не должен добавить сам вид, но это может быть использовано для создания LayoutParams по мнению
также как a
и b
являются тем же объектом, который является container
объектом в соответствии с документации для LayoutInflater
Если корень подавались, это корень
и корень был поставлен вами и это container
, так что у вас есть в основном так же, как a=container;
b=container;
, а затем вы возвращаетесь корень, в какой момент я действительно не знаю, что больше происходит из-за этого беспорядок. Я описал.
Лаки, чтобы исправить это легко:
создать другой XML-макет, как это (укороченный):
<FrameLayout>
<include layout="@layout/empty_list_view"/>
<include layout="@layout/progress_list_view"/>
</FrameLayout>
тогда раздувать этот новый XML:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.new_xml, container, false);
a = root.findViewById(.. ID of the root of empty_list_view..)
b = root.findViewById(.. ID of the root of progress_list_view..)
return root;
}
затем код будет работать.
оригинальный ответ:
Там нет странного поведения. Вы раздули эти макеты, и у вас есть 2 View
объекты, которые являются их репрезентативными. Но ничто не привязало эти Views
к пользовательскому интерфейсу.
Только вид, который вы возвращаете из onCreateView
, который будет прикреплен к пользовательскому интерфейсу устройства.
Например:
следующий код покажет a
:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//..
View a = inflater.inflate(R.layout.empty_list_view, container);
View b = inflater.inflate(R.layout.progress_list_view, container);
//..
return a;
}
следующий код покажет b
:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//..
View a = inflater.inflate(R.layout.empty_list_view, container);
View b = inflater.inflate(R.layout.progress_list_view, container);
//..
return b;
}
, если вы хотите, чтобы они оба togeher вы должны поставить их вместе в файле макета XML. Возможно, используйте тег include
, если вам нужно его повторно использовать.
Почему вы не раздувать новый вид в том же контейнере. – Rohit5k2