2014-01-22 2 views
1

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

Вот ссылка макета

Я пытаюсь поменять фрагмент C с фрагментом D на кнопку мыши. Фрагменты A и B должны оставаться без освежения.

Похоже, что я остановился в последний раз при загрузке фрагмента, не отбрасывая старый фрагмент, приводя к фрагменту D, появляющемуся над фрагментом C, с C все еще видимым.

Как это сделать?

+0

вам нужно заменить существующий фрагмент на другой? –

+0

@mohammedmomn Да. После onClick фрагмент C должен исчезнуть, и фрагмент D должен появиться с его содержимым. – Carl

ответ

1

Android Fragment API позволяют сделать некоторые операции в нем, как добавить новый, удалить и заменить один с другим, который поможет вам создать гибкий дизайн пользовательского интерфейса на основе размера вашего устройства,

и здесь некоторые руководство для вас:

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

http://www.cs.dartmouth.edu/~campbell/cs65/lecture09/lecture09.html

http://android-er.blogspot.com/2013/04/replace-fragment.html

и если вы столкнулись с какой-либо проблемой в коде, скажите мне обсудить в нем

+0

Я просматриваю документацию по Android для пользовательского интерфейса, но он основан на другом дизайне, чем я ищу. Ваша последняя ссылка творит чудеса, однако! Я посмотрю код позже и посмотрю, что я могу понять. Спасибо огромное! – Carl

+0

Итак, последняя ссылка работала идеально. Это помогло мне создать общий макет и позволить мне настраивать мои кнопки, чтобы вырезать средний фрагмент. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что я не могу добавить onClickListener в основной контейнер. В одном из фрагментов (первый загружен) я добавил кнопку, но я не знаю, как установить onclicklistener. В деятельности - отлично, но не в этих динамических фрагментах. – Carl

+0

, если вы говорите об общении между фрагментами и другими компонентами, мы используем методы обратного вызова, и здесь ссылка объясняет эту идею, http://laaptu.wordpress.com/2012/09/02/android-effectively-communicating-brom-fragments -and-activities-to-avoid-null-pointer-exception-errors/ напишите мне, если вы получите свою идею –

2

Существует вызов внутри FragmentTransaction для замены фрагмента в контейнере. Вам просто нужно, чтобы назначенный контейнер держал место, где c и d будут идти, а затем после нажатия кнопки сделайте что-то вроде: getSupportFragmentManager().beginTransaction().replace(R.id.container, fragment, "FragD");

+0

Имейте в виду, что вы не можете удалить или заменить фрагменты, которые не были добавлены динамически (с помощью DragmentManager) в первую очередь. – Krylez

+1

Для того, чтобы это сработало, вы не можете указать фрагменты в xml. Они должны быть добавлены/заменены на что-то вроде «FrameLayout». – Wenger

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