2013-04-04 8 views
13

Im essayant de faire une application qui a le type de navigation de glisser. C'est jusqu'où je suis allé:Android glisser, en utilisant ViewPager sans onglets

activité Fragment:

package com.app.BoomBase; 

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

public class Fragment_control extends Fragment { 

String tag = this.getClass().getSimpleName(); 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    Log.i(tag, "onCreate"); 
    super.onCreate(savedInstanceState); 
    /** Getting the arguments to the Bundle object */ 
    Bundle data = getArguments(); 

} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    Log.i(tag, "onCreateView"); 

    View view = inflater.inflate(R.layout.fragment_controle,container, false); 

    return view; 
    } 

    } 

FragmentPageAdapter:

package com.app.BoomBase; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

    public class Fragment_Pager extends FragmentPagerAdapter { 

final int PAGE_COUNT = 3; 
public Fragment_Pager(FragmentManager fm) { 
    super(fm); 
    // TODO Auto-generated constructor stub 
} 

@Override 
public Fragment getItem(int arg0) { 

    Fragment_control myFragment = new Fragment_control(); 
    Bundle data = new Bundle(); 
    data.putInt("current_page", arg0+1); 
    myFragment.setArguments(data); 
    return myFragment; 

} 

@Override 
public int getCount() { 
    // TODO Auto-generated method stub 
    return PAGE_COUNT; 
} 

} 

MainActivity:

package com.app.BoomBase; 

import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.view.ViewPager; 
import android.util.Log; 
import android.view.Menu; 

public class MainActivity extends FragmentActivity { 

String tag = this.getClass().getSimpleName(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Log.i(tag, "onCreate"); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    /** Getting a reference to the ViewPager defined the layout file */ 
    ViewPager pager = (ViewPager) findViewById(R.id.pager); 

    /** Getting fragment manager */ 
    FragmentManager fm = getSupportFragmentManager(); 

    /** Instantiating FragmentPagerAdapter */ 
    Fragment_Pager pagerAdapter = new Fragment_Pager(fm); 

    /** Setting the pagerAdapter to the pager object */ 
    pager.setAdapter(pagerAdapter); 

} 
} 

Mais mon problème est que je ne peux pas comprendre comment ajouter des fragments au code. Je veux passer à l'activité suivante avec des boutons et des trucs dessus. Comment je fais ça ?

+0

https://androidbeasts.wordpress.com/2015/08/11/tabs-with-swipe-views/#more-79 – Aakash

Répondre

15

PageAdapter utilise votre getItem() pour basculer entre Fragments, c'est où vous déclareriez quelle page fait quoi. "Position" 0 est la première page, 1 est la deuxième et ainsi de suite. Vous pouvez simplement renvoyer une nouvelle instance de votre autre Fragments ou passer des arguments si vous le souhaitez.

Par exemple:

@Override 
public Fragment getItem(int position) { 
    switch (position) { 
    case 0: 
     // Your current main fragment showing how to send arguments to fragment 
     Fragment_control myFragment = new Fragment_control(); 
     Bundle data = new Bundle(); 
     data.putInt("current_page", position+1); 
     myFragment.setArguments(data); 
     return myFragment; 
    case 1: 
     // Calling a Fragment without sending arguments 
     return new MySecondFragment(); 
    case 2: 
     return new MyThirdFragment(); 
    default: 
     return null; 
    } 
} 

Ensuite, vous créer une Fragment classe pour chacun de ceux que vous souhaitez intégrer. Dans mon exemple, vous auriez une classe pour MySecondFragment et MyThirdFragment

public class MySecondFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.second_fragment, null); 
     return view; 
    } 

} 

Et

public class MyThirdFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.third_fragment, null); 
     return view; 
    } 

} 

Tout fragment peut simplement gonfler un fichier de mise en page standard XML, pour accéder aux enfants dans la mise en page que vous le feriez N'oubliez pas d'utiliser ce qui suit, je vais utiliser MySecondFragment comme exemple.

Disons que vous avez deux Buttons avec dans un fichier de configuration de id R.id.button1 et R.id.button2 intitulé 'second_fragment':

public class MySecondFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.second_fragment, null); 

     // Make sure to add the parent inflater before and layout child call 
     Button btn_one = (Button)view.findViewById(R.id.button1); 
     Button btn_two = (Button)view.findViewById(R.id.button2); 

     return view; 
    } 

} 

Modifier

Pour commencer à une autre page puis 0 ou la première position que vous utiliseriez simplement setCurrentItem() dans votre MainAvticity, comme ceci:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    Log.i(tag, "onCreate"); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ViewPager pager = (ViewPager) findViewById(R.id.pager); 
    FragmentManager fm = getSupportFragmentManager(); 
    Fragment_Pager pagerAdapter = new Fragment_Pager(fm); 
    // Here you would declare which page to visit on creation 
    pager.setAdapter(pagerAdapter); 
    pager.setCurrentItem(1); 

} 
+1

Merci beaucoup! J'ai regardé autour pendant 2 jours maintenant, pour une solution à mon problème! :) – Lasse

+1

Content de pouvoir aider, bonne chance! – jnthnjns

+1

merci et vous aussi :-) – Lasse

0

J'ai ajouté ce fragment dans la classe ..

la question que je suis arrivé est ne peut pas résoudre ne peut pas résoudre obtenir gestionnaire de fragments de support().

@Override 
protected void onCreate(Bundle savedInstanceState) { 
Log.i(tag, "onCreate"); 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 

ViewPager pager = (ViewPager) findViewById(R.id.pager); 
FragmentManager fm = getSupportFragmentManager(); 
Fragment_Pager pagerAdapter = new Fragment_Pager(fm); 
// Here you would declare which page to visit on creation 
pager.setAdapter(pagerAdapter); 
pager.setCurrentItem(1); 

} 
Questions connexes