помогите заменить ViewPager на Fragment
помогите заменить ViewPager на Fragment
никак не получается разобраться , пробую
Fragment itemFragment = new NewFragment();
getFragmentManager()
.beginTransaction()
.replace(R.id.second_fragment, itemFragment)
.addToBackStack(null)
.commit();
идея заключается в том , что на нажатие кнопки в меню - показать на месте ViewPager другой фрагмент.
Fragment itemFragment = new NewFragment();
getFragmentManager()
.beginTransaction()
.replace(R.id.second_fragment, itemFragment)
.addToBackStack(null)
.commit();
идея заключается в том , что на нажатие кнопки в меню - показать на месте ViewPager другой фрагмент.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: помогите заменить ViewPager на Fragment
Ну кот вроде верный, хоть и некрасивый. В чем ошибка?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: помогите заменить ViewPager на Fragment
Ни чего подобного, код абсолютно не верен.
При указании ID в методе replace, нужно указывать ID контейнера, таких как LinearLayout или FrameLayout.
Фактически, фрагмент не заменяет указанный View а помещается в него.
Вам нужно сделать 2 фрагмента, один с ViewPager, другой ItemFragment.
Для того, что бы сделать правильный фрагмент с ViewPager нужно использовать NestedFragments: http://developer.android.com/about/vers ... dFragments
При указании ID в методе replace, нужно указывать ID контейнера, таких как LinearLayout или FrameLayout.
Фактически, фрагмент не заменяет указанный View а помещается в него.
Вам нужно сделать 2 фрагмента, один с ViewPager, другой ItemFragment.
Для того, что бы сделать правильный фрагмент с ViewPager нужно использовать NestedFragments: http://developer.android.com/about/vers ... dFragments
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: помогите заменить ViewPager на Fragment
А, точно, не заметил. Думал это id контейнера.
В чем его неверность? В том что id не контейнера указан? Что-нибудь еще?код абсолютно не верен
Вопрос не стоит поменять фрагменты внутри ViewPager, вопрос стоит поменять один фрагмент на другой по сути. Тут и NestedFragments не нужны.Для того, что бы сделать правильный фрагмент с ViewPager нужно использовать NestedFragments
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: помогите заменить ViewPager на Fragment
Если фрагмент с ViewPager использует фрагменты в качестве страниц, то для адаптера ViewPager нужно использовать фрагмент менеджер полученный через getChildFragmentManager(). Вот к чему я клоню.Mikhail_dev писал(а):Вопрос не стоит поменять фрагменты внутри ViewPager, вопрос стоит поменять один фрагмент на другой по сути. Тут и NestedFragments не нужны.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
- Mikhail_dev
- Сообщения: 2386
- Зарегистрирован: 09 янв 2012, 14:45
- Откуда: Самара
Re: помогите заменить ViewPager на Fragment
я больше чем уверен, что если бы была вложенность, то вылезла ошибка при вызове getFragmentManager(), так что тут не вложенные фрагменты, а просто замена фрагментов в контейнере в рамках активности
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: помогите заменить ViewPager на Fragment
Она не вылезла по тому, что сейчас, скорее всего, ViewPager не на фрагменте , а на Activity.Mikhail_dev писал(а):я больше чем уверен, что если бы была вложенность, то вылезла ошибка при вызове getFragmentManager(), так что тут не вложенные фрагменты, а просто замена фрагментов в контейнере в рамках активности
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: помогите заменить ViewPager на Fragment
спасибо большое за ответы , попробую разобраться
Re: помогите заменить ViewPager на Fragment
так и не выходит у меня каменный цветок (
помогите разобраться плз. по нажатию - получаю пустой экран , никаких ошибок не выдает (
main.xml
в основном FragmentActivity добавляю фрагмент и ViewPager
потом пытаюсь сделать , чтобы по нажатию кнопки вместо ViewPager появился новый фрагмент
new_fragment.xml
NewFragmnet.java
помогите разобраться плз. по нажатию - получаю пустой экран , никаких ошибок не выдает (
main.xml
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<FrameLayout
android:id="@+id/first_container"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
android:id="@+id/second_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_below="@+id/first_container" >
</android.support.v4.view.ViewPager>
</RelativeLayout>Код: Выделить всё
// Adding first fragment
FragmentManager fm = getSupportFragmentManager();
Fragment fragment = fm.findFragmentById(R.id.first_container);
if (fragment == null) {
fragment = new NavigationButtons();
fm.beginTransaction().add(R.id.first_container, fragment).commit();
/// Adding second fragment
pager = (ViewPager) findViewById(R.id.second_container);
pagerAdapter = new MyFragmentPagerAdapter(
getSupportFragmentManager());
pager.setAdapter(pagerAdapter); Код: Выделить всё
onClick:
Fragment itemFragment = new NewFragment();
getFragmentManager()
.beginTransaction()
.replace(R.id.second_container, itemFragment)
.addToBackStack(null)
.commit();
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentId"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/testedText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello "
android:textColor="@android:color/black"
android:textSize="24dp" />
</LinearLayout>
Код: Выделить всё
public class NewFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.new_fragment, container, false);
return view;
}
}