2017-04-21 7 views
1

Ich bin ein neues Mitglied hier. Ich habe schon mehrere Suchen für zwei Tage zu meinem Problem gemacht, aber ich habe nichts gefunden. Also ich lade Sie ein, um Hilfe zu bitten.Anzeige ViewPager in Fragment meiner HauptAktivität

Ich habe eine Navigationsschublade Dies ist eine Kategorie Ich möchte ein Fragment, dass, wenn ich nach links oder rechts rutschen, erscheint mein Kalender mit einem anderen Datum. Also habe ich einen ViewPager in einem Fragment entwickelt. Dieses Fragment ist ein Fragment für meine Navigationsschublade. Mein Problem: Der ViewPage wird nicht angezeigt.

Entweder ist es der Seitenviewer, der angezeigt wird, oder es ist ein leeres Fragment. Es ist die Codezeile, die die Anzeige zu ändern:

mContext.setContentView(ViewPager); 

screen without this code screen with this code Die Zahl „89“ ist eine Zufallszahl, die von 1 auf Swipe erhöht wird.

Der differents Codeteil: im Haupt acitivity Fragment zeigen:

TestSlideFragment fragment = new TestSlideFragment(); 
fragmentTransaction.replace(R.id.RelativeLayout_for_Fragment, fragment, fragment.getTag()); 
fragmentTransaction.commit(); 

testSlideFragment (Java und XML)

public class TestSlideFragment extends Fragment { 
    View view = null; 
    private static final int NUM_PAGES = 5; 
    int nbr = 0 ; 

    /** 
    * The pager widget, which handles animation and allows swiping horizontally to access previous 
    * and next wizard steps. 
    */ 
    private ViewPager mPager; 

    ViewPager ViewPager; 
    FragmentStatePagerAdapter mAdapt; 
    //private TabsAdapter d; 

    /** 
    * The pager adapter, which provides the pages to the view pager widget. 
    */ 
    private PagerAdapter mPagerAdapter; 


    public TestSlideFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 



     view = inflater.inflate(R.layout.fragment_test_slide, container, false); 
     return view; 
    } 

    /** 
    * The number of pages (wizard steps) to show in this demo. 
    */ 

    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     Activity mActivity = getActivity(); 
     FragmentActivity mContext; 
     mContext=(FragmentActivity) mActivity; 

     ViewPager = new ViewPager(mContext); 
     ViewPager.setId(R.id.slide); 
     mContext.setContentView(ViewPager); 

     mPagerAdapter = new ScreenSlidePagerAdapter(mContext.getSupportFragmentManager()); 
     ViewPager.setAdapter(mPagerAdapter); 
     ViewPager.setCurrentItem(1); 

    } 



    /** 
    * A simple pager adapter that represents 5 ScreenSlidePageFragment objects, in 
    * sequence. 
    */ 
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 
     public ScreenSlidePagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return new ScreenSlidePageFragment(); 
     } 

     @Override 
     public int getCount() { 
      return NUM_PAGES; 
     } 
    } 


} 

XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:tag="fragment_test_slide" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="oytoch.iut_info.test.TestSlideFragment"> 

    <!-- TODO: Update blank fragment layout --> 
    <android.support.v4.view.ViewPager 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/page" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</FrameLayout> 

ScreenSlidePageFragment

public class ScreenSlidePageFragment extends Fragment { 
ViewGroup rootView = null; 
SharedPreferences sharedpreferences; 
public static final String MyPREFERENCES = "MyPrefs" ; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
     rootView = (ViewGroup) inflater.inflate(
      R.layout.fragment_screen_slide_page,container,false); 


    return rootView; 
} 
public void onActivityCreated(@Nullable Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    Activity mActivity = getActivity(); 
    Context mContext = getActivity(); 

    TextView slide_txt = (TextView) rootView.findViewById(R.id.slide); 

    SharedPreferences prefs = mContext.getSharedPreferences(MyPREFERENCES , MODE_PRIVATE); 
    int restoredText = prefs.getInt("nbr", 0); 

    slide_txt.setText(Integer.toString(restoredText)); 

    sharedpreferences = mContext.getSharedPreferences(MyPREFERENCES, MODE_PRIVATE); 
    SharedPreferences.Editor editor = sharedpreferences.edit(); 
    editor.putInt("nbr", 1+ restoredText); 
    editor.commit(); 
} 

}

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent"> 


    <ScrollView 
     android:id="@+id/content" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" > 

     <TextView`enter code here` 
      android:padding="16dp" 
      android:id="@+id/slide" 
      android:lineSpacingMultiplier="1.2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="lorem_ipsum" /> 
    </ScrollView> 
</FrameLayout> 

Wie zeige ich diese Seite Betrachter in meiner Haupttätigkeit? Danke für das Lesen

Antwort

0

In Ihrem TestSlideFragment unten Code ersetzen, die Sie in onActivityCreated geschrieben haben

ViewPager = new ViewPager(mContext); 
    ViewPager.setId(R.id.slide); 
    mContext.setContentView(ViewPager); 

mit

ViewPager = (ViewPager)getView().findViewById(R.id.page); 

Und versuchen Sie Ihre Anwendung erneut aus.

+0

Vielen Dank, ich glaube, mein Fehler war, dass ich, bevor sie mit einer anderen Tätigkeit hätte versucht, und ich habe einfach kopieren/meinen Code in einem Fragmente einzufügen. – Oytoch

0

Warum fügen Sie den Viewpager in der setcontentview-Methode hinzu? Dadurch wird der Viewpager für die gesamte Aktivität festgelegt.

Finden Sie Ihren viewpager innerhalb des Fragments wie

vp = (ViewPager) view.findViewById(R.id.viewpager). 
Verwandte Themen