2016-07-30 23 views
-1

ich verwende einfach ViewPager auf meine Tätigkeit genannt, die mit denen ich einige Fragmente in das anhängen, wenn das erste Fragment in das angebracht ist, das Fragment namens mehrereFragmente mehrfach auf ViewPager

Mein einfachen Code zu testen:

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Toast; 


public class MainActivity extends FragmentActivity { 
    private static final int NUM_PAGES = 3; 
    private ViewPager pager; 
    private PagerAdapter adapter; 

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

     // Instantiate Pager & Adapter 
     pager = (ViewPager) findViewById(R.id.viewpager); 
     adapter = new ScreenSlidePagerAdapter(getSupportFragmentManager()); 
     pager.setAdapter(adapter); 
    } 

    @Override 
    public void onBackPressed() { 
     if(pager.getCurrentItem() == 0) { 
      super.onBackPressed(); 
     } 
     else { 
      pager.setCurrentItem(pager.getCurrentItem() -1); 
     } 
    } 

    // PagerAdapter SubClass 
    private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter { 

     public ScreenSlidePagerAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      Fragment fragment; 
      switch(position) { 
       case 0: 
        fragment = new TutorialPage1(); 
        break; 
       case 1: 
        fragment = new TutorialPage1(); 
        break; 
       case 2: 
        fragment = new TutorialPage1(); 
        break; 
       default: 
        fragment = new TutorialPage1(); 
        break; 
      } 
      return fragment; 
     } 

     @Override 
     public int getItemPosition(Object object) { 
      return POSITION_NONE; 
     } 

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

    } /* EOC */ 

    public static class TutorialPage1 extends Fragment { 

     private static int pageIndex; 
     private static final String TAG = "TAG"; 

     public TutorialPage1() { 
     } 

     public void TutorialPage1(int id) { 
      pageIndex = id; 
      Log.v(TAG, "Page Index is " + pageIndex); // this logs twice 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

      Log.e(TAG, "Res Index is "); 
      ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.myfragment_layout, container, false); 
      Toast.makeText(getActivity(), "----->", Toast.LENGTH_SHORT).show(); 
      return rootView; 
     } 
    } 
} /* EOC */ 

Antwort

0

Gedanken:

# 1

In Ihrem getItem() -Aufruf Sie haben TutorialPage1() auf jeweils genannt bringen ...

# 2

ViewPagers auf beiden Seiten davon, die Fragmente erwachen tun und speichern sie im Speicher, um ein schnelles Umschalten zwischen den Fragmenten zu ermöglichen, , so könnte das sein, was Sie sehen ... aber Sie können nicht überprüfen, es sei denn, Sie beheben # 1

+0

ja, es ist nur Test, nach der Änderung in andere Klasse, Problem nicht lösen Sir –

+0

oh, ich bin so leid. Bitte lass mich nochmal testen –

Verwandte Themen