Ошибка во втором фрагменте экземпляра на ViewPager

#android #layout #android-viewpager #fragment #android-fragmentactivity

#Android #макет #android-viewpager #фрагмент #android-fragmentactivity

Вопрос:

я делаю простой viewpager, мой основной — это FragmentActivity, подобный этому:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_vtg_main);

    Log.w("bug bug", " ------------------------------------------------- inicia");

    actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    Log.w("bug bug", " ------------------------------------------------- get act");

    fragmentos = new ArrayList<Fragment>();
    fragmentos.add(new FragmentLineas());
    fragmentos.add(new FragmentMedicamentos());


    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(new CustomPagerAdapter(getSupportFragmentManager()));
}
  

макет:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <android.support.v4.view.ViewPager
    android:id="@ id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

</RelativeLayout>
  

Фрагмент:

 package co.com.smartmedia.vademtg;

import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class FragmentLineas extends Fragment {

    private View myView;

    public FragmentLineas() {
        // TODO Auto-generated constructor stub
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        myView = super.onCreateView(inflater, container, savedInstanceState);

        getActivity().setContentView(R.layout.frame_lineas_layout);

        return myView;
    }

}
  

(другой фрагмент — это тот же код, но с другим именем объекта)
и макет для каждого фрагмента следующий:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


</RelativeLayout>
  

Ошибка, которую я получаю:

 07-01 08:09:40.168: E/FragmentManager(1888): No view found for id 0x7f060000 (co.com.smartmedia.vademtg:id/pager) for fragment FragmentMedicamentos{41c4cb78 #1 id=0x7f060000}
  

я не знаю, что делать, это слишком просто, но когда я создаю второй фрагмент объекта:

 fragmentos.add(new FragmentLineas());
fragmentos.add(new FragmentMedicamentos());  //this onee
  

Появляется ошибка, и если я поменяю местами эти строки, ошибка изменится на объект второго класса.

Есть идеи?

Ответ №1:

измените конструктор фрагментов на:

     myView = inflater.inflate(R.layout.frame_medicamentos_layout, container, false);