2015-10-30 4 views
0

Как я могу создать фрагмент, в котором он является динамическим?
Например. По умолчанию содержимое фрагмента равно трем <Button>, в зависимости от активности, которую он представляет, фрагмент может иметь только два <button> или только один <button>.Фрагмент с динамическим контентом

Как я могу контролировать эту «условную видимость» контента?

Также есть способ контролировать эту «условную видимость» кнопок в зависимости от состояния активности?


Каков наилучший способ сделать это? Могу ли я создать фрагмент xml со всеми кнопками и контролировать видимость их в действии? Или я вставляю и удаляю кнопку через активность или через сам фрагмент?

Извините за мой английский, я бразильский пользователь.

ответ

2

Во-первых, вы объявляете все нужные вам кнопки в макете. Затем по вашему требованию вы устанавливаете параметр visbility этой конкретной кнопки динамически в коде фрагмента.

Что-то вроде:

View b = findViewById(R.id.button); 
b.setVisibility(View.GONE); 

Вы также можете увидеть некоторые принципы построения гибкого интерфейса здесь:

http://developer.android.com/intl/es/training/basics/fragments/fragment-ui.html

0

Если фрагменты отличаясь достаточно подробно, просто создать два (или более) фрагментов.

Лучший способ сообщить фрагменту о том, что показывать, используя аргументы. Here's an article примерно это. В основном, активность добавит аргумент типа DISPLAY_FULL: true или false, а затем вы получите этот аргумент из пакета в onCreate(...) и сохраните его в поле. Затем в onCreateView(...) вы проверяете значение поля и скрываете/отображаете элементы пользовательского интерфейса в зависимости от этого.

1

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

newInstance метод для подталкивания флагов.

public static final String ARG_BUTTON_VISIBILITY_FLAGS = "visibility_flags"; 

public static MyFragment newInstance(Boolean[] param1) { 
    AboutUsFragment fragment = new AboutUsFragment(); 
    Bundle args = new Bundle(); 
    args.putBooleanArray(ARG_BUTTON_VISIBILITY_FLAGS, param1); 
    fragment.setArguments(args); 
    return fragment; 
} 

Доступ к этим данным можно получить в onCreate вашего фрагмента. как это

private Boolean[] mVisibilityFlags; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (getArguments() != null) { 
     mVisibilityFlags = getArguments().getBooleanArray(ARG_BUTTON_VISIBILITY_FLAGS); 
    } 
} 

И вместо того, чтобы ваш инстанцировании фрагмент как так MyFragment fragment = new MyFragment() вы instatiate его как этот MyFragment myFragment = MyFragment.newInstance(buttonVisibilityFlags); так таким образом, вы успешно прошли флаги вашего фрагмента.

Теперь, основываясь на положении кнопки на вашем взгляде, вы устанавливаете свою вязкость, соответственно говорите, если позиция кнопки равна 3, вы делаете button3.setVisibility(mVisibilityFalgs[3])

Смежные вопросы