Все, кроме одного фрагмента в деятельности являются пустыми - PullRequest
0 голосов
/ 19 февраля 2019

Я пытаюсь создать экран пользователя с несколькими динамически загружаемыми частями, поэтому я создал действие, добавил некоторое другое статическое содержимое и 5 фрагментов в режиме конструктора.Для каждого из фрагментов я создал новую активность, подобную этой:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class fragmentX extends Fragment {

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view= inflater.inflate(R.layout.activity_registration_picker_fragment, container, false);
    return view;
}
}

Первый фрагмент виден все время, и он работает.Там у меня есть веб-просмотр и никаких проблем.

Ниже у меня есть 4 флажка, и, например, если пользователь нажмет флажок, будет показан фрагмент2.Я могу показать или скрыть фрагменты, используя

FragmentManager fm = getSupportFragmentManager();
Fragment fr = fm.findFragmentById(R.id.fragmentX);
FragmentTransaction ft = fm.beginTransaction();
ft.show(fr); // or ft.hide(fr);
ft.commit();

, к сожалению, содержимое фрагментов 2-5 не видно, там я получаю только большое пустое пространство.

Я также пытался создатьframeLayouts в качестве заполнителей и динамическое добавление фрагментов с использованием

fr.add(R.id.myPlaceholderX,new fragmentX)

с тем же результатом.

Есть какие-нибудь намеки на то, что я делаю неправильно?

Заранее спасибо, Кристиан:)

1 Ответ

0 голосов
/ 19 февраля 2019

У меня есть другое решение, которое работает для меня.Я решил не использовать фрагменты и вместо этого иметь весь код в одной деятельности.Там я создал LinearLayout для каждой части, которую я хочу скрыть.Каждый LL невидим, но дополнительно имеет высоту 0, в противном случае пространство все равно будет выделено.

Когда кто-то активирует флажок, я запускаю

findViewById(R.id.myLinearLayout).setVisibility(View.VISIBLE);
LinearLayout llt = (LinearLayout)findViewById(R.id.myLinearLayout);
llt.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));

, и если кто-то снимает флажок, я выполняю:

findViewById(R.id.myLinearLayout).setVisibility(View.INVISIBLE);
ViewGroup.LayoutParams lp = llt.getLayoutParams();
lp.height = 0;
llt.setLayoutParams(lp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...