2017-06-30 4 views
1

Ich habe ein Problem und mehr über das Problem zu wissen, siehe das Video, https://www.youtube.com/watch?v=mLZbakv2M7E&feature=youtu.be Ich möchte zu den Einstellungen nur gehen, wenn es in der Seite heute ist , aber es ist offen zufällig ich weiß nicht warum.Wie starte ich die Einstellungen, wenn ViewPager Fragment angezeigt wird?

MainActivity

public class MainActivity extends AppCompatActivity { 


    private SectionsPagerAdapter mSectionsPagerAdapter; 
    private ViewPager mViewPager; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
     mViewPager = (ViewPager) findViewById(R.id.container); 
     mViewPager.setAdapter(mSectionsPagerAdapter); 
     TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(mViewPager); 

    } 








    public class SectionsPagerAdapter extends FragmentPagerAdapter { 

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

     @Override 
     public Fragment getItem(int position) { 
      switch (position) 
      { 
       case 0: 
        return new Fragment_today(); 
       case 1: 
        return new Fragment_tomorrow(); 
       case 2: 
        return new Fragment_days(); 
       default: 
        return null; 
      } 

     } 

     @Override 
     public int getCount() { 

      return 3; 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      switch (position) { 
       case 0: 
        return "TODAY"; 
       case 1: 
        return "TOMORROW"; 
       case 2: 
        return "10 DAYS"; 
      } 
      return null; 
     } 
    } 







} 

Fragment heute

public class Fragment_today extends Fragment{ 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_today,container,false); 
     Intent viewIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     startActivity(viewIntent); 
     return v; 
    } 

} 

Ich brauche Hilfe vor 4 Tagen Ich versuche, eine Lösung

Antwort

0

Standardverhalten eines ViewPager das Fragment initialisiert zu finden zur Zeit gezeigt, und auch Fragmente auf beiden Seiten.

Um Einstellungen nur zu starten, wenn das Fragment_today Fragment gezeigt wird, verwenden Sie ein ViewPager.OnPageChangeListener():

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

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 
    mViewPager = (ViewPager) findViewById(R.id.container); 
    mViewPager.setAdapter(mSectionsPagerAdapter); 
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(mViewPager); 

    mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } 

     @Override 
     public void onPageSelected(int position) { 

      if (position == 0) { 
       Intent viewIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
       startActivity(viewIntent); 
      } 

     @Override 
     public void onPageScrollStateChanged(int state) { } 
    }); 

} 

Auch die Einstellungen Code aus dem Fragment entfernen:

public class Fragment_today extends Fragment{ 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_today,container,false); 
     //Remove: 
     //Intent viewIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); 
     //startActivity(viewIntent); 
     return v; 
    } 

} 
+0

Nun, ich dies nicht brauchen getitem ?? –

+0

Sie benötigen immer noch den Rest Ihres Codes, die einzige Änderung, die benötigt wird, ist in onCreate(), das ist alles, was ich in der Antwort eingeschlossen habe. –

+0

Aber mein Schritt außerhalb der Anwendung sagt mir, es gibt ein Problem, @Override public Fragment getItem (int-Position) { zurück null; } –

Verwandte Themen