2013-05-12 2 views
0

Я следовал this tutorial и его отлично работает. В представлении моего фрагмента есть несколько кнопок, для которых мне присвоен onClick. Например, у меня есть кнопка, как:Как подключиться к parentView при использовании фрагментов?

<ImageButton 
android:onClick="doSomething"> 
</ImageButton> 

При создании rootView я использую следующий код:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(
      R.layout.fragment_screen_slide_page, container, false); 

    return rootView; 
} 

Я сделал некоторые погугли и выяснил, последний параметр для подключения к parentView и у меня есть установите значение true. Но родительский вид - контейнер. Где этот контейнер указывает? Где мне написать функцию doSomething?

+0

Почему вы не берете ссылочный объект из ImageButton и не добавляете кликер в onCreateView(), указав из объекта rootView – Noundla

+0

@noundla Да, это возможно. Но я просто изучаю концепцию. Это было бы легко и структурировано в обратном направлении? Должно быть каким-то образом привязать viewGroup и FragmentActivity. –

+1

Я предполагаю, что это будет сложно при использовании фрагментов. Потому что в определенное время нам может понадобиться удалить и добавить фрагменты. Кроме того, этот метод будет работать с Activity. Так лучше продолжать, используя слушателей. – Noundla

ответ

1

Я сделал некоторые поисковые запросы и нашел последний параметр для прикрепления к parentView, и я установил его в true.

Не устанавливайте его на true. В onCreateView() вы создадите представление для фрагмента и вернете его, и Android приложит это представление к макету самостоятельно (что говорит документация).

Куда этот контейнер указывает?

Если не равно нулю, это будет макет, в котором будет добавлен вид фрагмента, как правило, используется для создания надлежащего LayoutParams для вновь надувается зрения.

Где мне написать функцию «doSomething»?

Как кнопки, используя атрибут onClick будет частью макета фрагмента вы должны удалить атрибут onClick из макета и установить OnClickListener в коде на кнопках. Android будет искать метод doSomething() на уровне Activity, чтобы вы не могли получить событие on click непосредственно во фрагменте.

+0

Я понимаю, что он не может получить событие onClick непосредственно во фрагменте. Но есть FragmentActivity, который создает фрагмент. Есть ли способ направить события на эту активность? –

+1

@GeoPaul «Активность» может отправить событие фрагменту, если это то, что вы хотите. Вы реализуете метод 'doSomething()' в 'Activity' и в методе' doSomething() 'вы будете искать целевой фрагмент и вызывать метод на этом фрагменте, чтобы он знал, что произошло. Но это просто усложнит ситуацию, а слушатели в фрагменте - лучшая идея. – Luksprog

+0

Хорошо, я буду использовать OnClickListeners. Но если есть лучший способ, дайте мне знать –

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