Как добавить фрагмент в ViewPager? AddView отключает мое приложение

Я использую по умолчанию код фрагмента страницы Swipe, который начинается с Android, когда вы запускаете новое приложение для Android. Я понял, как изменить свои данные и использовать вкладки, но я не понял, как добавить простой фрагмент к тому, что уже существует. Я хотел добавить инфобару вверху вкладок или прямо под ними. Я уверен, что это просто, я просто не могу понять, как LOL. Я изучаю примеры.

Я попытался добавить представление в viewpager, но мое приложение рушится, и я считаю, что я полностью ошибаюсь.

В моей MainActivity: …

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Set up the action bar. final ActionBar actionBar = getActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); mSectionsPagerAdapter = new SectionsPagerAdapter( getSupportFragmentManager()); // Set up the ViewPager with the sections adapter. mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mSectionsPagerAdapter); SubBarFragment infobar = new SubBarFragment(); mViewPager.addView(infobar.getView()); .....[extra code for menus and things] public class SectionsPagerAdapter extends FragmentPagerAdapter { public SectionsPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { ....[code to show specific tabs and return the tab's fragment] 

infobarfragment.java

 public class InfobarFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.infobar, container, false); return view; } } 

activity_main.xml

 <?xml version="1.0" encoding="utf-8"?> <android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity" /> 

infobar.xml

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/ic_wifi" /> <TextView android:id="@+id/statusText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Wifi Status Information" /> </LinearLayout> 

Solutions Collecting From Web of "Как добавить фрагмент в ViewPager? AddView отключает мое приложение"

Вы можете следовать этому подходу:

Просто используйте фрагменты для каждого представления в пейджере.

Напишите приведенный ниже код в onCreate() функции FragmentActivity .

 List<Fragment> fragments = new Vector<Fragment>(); //for each fragment you want to add to the pager Bundle page = new Bundle(); page.putString("url", url); fragments.add(Fragment.instantiate(this,MyFragment.class.getName(),page)); //after adding all the fragments write the below lines this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); mPager.setAdapter(this.mPagerAdapter); 

Определение фрагмента выборки:

 public class MyFragment extends Fragment { public static MyFragment newInstance(String imageUrl) { final MyFragment mf = new MyFragment (); final Bundle args = new Bundle(); args.putString("somedata", "somedata"); mf.setArguments(args); return mf; } public MyFragment() {} @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String data = getArguments().getString("somedata"); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate and locate the main ImageView final View v = inflater.inflate(R.layout.my_fragment_view, container, false); //... return v; } 

FragmentPagerAdapter

 public class MyFragmentAdapter extends FragmentPagerAdapter { public static int pos = 0; private List<Fragment> myFragments; public MyFragmentAdapter(FragmentManager fm, List<Fragment> myFrags) { super(fm); myFragments = myFrags; } @Override public Fragment getItem(int position) { return myFragments.get(position); } @Override public int getCount() { return myFragments.size(); } @Override public CharSequence getPageTitle(int position) { setPos(position); String PageTitle = ""; switch(pos) { case 0: PageTitle = "page 1"; break; case 1: PageTitle = "page 2"; break; case 2: PageTitle = "page 3"; break; case 3: PageTitle = "page 4"; break; case 4: PageTitle = "page 5"; break; case 5: PageTitle = "page 6"; break; case 6: PageTitle = "page 7"; break; } return PageTitle; } public static int getPos() { return pos; } public static void setPos(int pos) { MyFragmentAdapter.pos = pos; } }