2017-12-05 2 views
0

Ich möchte jedes Mal ein neues Fragment hinzufügen, wenn ich direkt auf das letzte Fragment swype oder auf das erste dynamisch zurückwechsle. Dieses Fragment wird zu meinem Adapter hinzugefügt, der auf meinen viewPager gesetzt wird. Im Moment habe ich eine statische Anzahl von Fragmenten im setupViewPager definiert und sie "laden" in der OnCreate-Methode. Hier ist mein Code:neues Fragment in Seitenaufruf hinzufügen swipe

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.NavigationView; 
import android.support.design.widget.TabLayout; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 
import android.support.v4.view.GravityCompat; 
import android.support.v4.view.ViewPager; 
import android.support.v4.widget.DrawerLayout; 
import android.support.v7.app.ActionBar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.support.android.designlibdemo.Diafragment; 
import com.support.android.designlibdemo.R; 

import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 
import java.util.List; 
import java.util.Locale; 

public class MainActivity extends AppCompatActivity { 

    private DrawerLayout mDrawerLayout; 
    private ViewPager viewPager; 

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

     Toolbar toolbar = findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     viewPager = findViewById(R.id.viewpager); 
     if (viewPager != null) { 
      setupViewPager(viewPager); 
     } 

     Intent intent = getIntent(); 
     String nome = intent.getStringExtra("nome"); 

     View headerView = navigationView.getHeaderView(0); 
     TextView navUsername = headerView.findViewById(R.id.tv_drawerUsername); 
     navUsername.setText(nome); 

     TabLayout tabLayout = findViewById(R.id.tabs); 
     tabLayout.setupWithViewPager(viewPager); 
    } 

    private void setupViewPager(ViewPager viewPager) { 

     SimpleDateFormat sdf = new SimpleDateFormat("EEE"); 
     Date date = new Date(); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     date = calendar.getTime(); 

     String day = sdf.format(date); 

     Adapter adapter = new Adapter(getSupportFragmentManager()); 
     adapter.addFragment(new Diafragment(), day); 

     calendar.add(Calendar.DATE, 1); 
     date = calendar.getTime(); 
     String dayplusone = sdf.format(date); 
     adapter.addFragment(new Diafragment(), dayplusone); 

     calendar.add(Calendar.DATE, 1); 
     date = calendar.getTime(); 
     String dayplustwo = sdf.format(date); 
     adapter.addFragment(new Diafragment(), dayplustwo); 

     viewPager.setAdapter(adapter); 
    } 


    static class Adapter extends FragmentPagerAdapter { 
     private final List<Fragment> mFragments = new ArrayList<>(); 
     private final List<String> mFragmentTitles = new ArrayList<>(); 

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

     public void addFragment(Fragment fragment, String title) { 
      mFragments.add(fragment); 
      mFragmentTitles.add(title); 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return mFragments.get(position); 
     } 

     @Override 
     public int getCount() { 
      return mFragments.size(); 
     } 

     @Override 
     public CharSequence getPageTitle(int position) { 
      return mFragmentTitles.get(position); 
     } 
    } 
} 

Antwort

1

Nur ViewPager erweitern und außer Kraft setzen onInterceptTouchEvent() wie hier gezeigt https://stackoverflow.com/a/13347008/2000083

+0

Ich setzte es und Im CustomViewPager myViewPager mit ;. Mein Zweifel ist, was ich als Parameter weitergeben sollte, wenn ich den myViewPager.setOnSwipeOutListener (???) verwende; –

Verwandte Themen