2013-04-04 14 views
13

Gezinme türüne sahip bir uygulamayı yapmaya çalışıyorum. Bu gittiğim ne kadar geçerli:Android swiping, sekmeler olmadan ViewPager'ı kullanma

Fragment etkinliği:

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); 

} 
} 

Ama benim problemim yapamam olduğunu Kod parçalarını nasıl ekleyeceğimizi öğrenmek. Bir sonraki etkinliğe düğmeler ve bunlarla ilgili şeyler ile kaydırmak istiyorum. Bunu nasıl yaparım ?

+0

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

cevap

15

PageAdapter, getItem() öğünüzü kullanarak Fragments arasında geçiş yapar; bu, hangi sayfanın neyi yaptığını bildireceğiniz yerdir. "Konum" 0 ilk sayfadır, 1 ikinci ve daha fazlasıdır. İsterseniz diğer Fragments'un yeni bir örneğini döndürebilir veya bağımsız değişkenleri iletebilirsiniz. Örneğin

:

@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; 
    } 
} 

Sonra da dahil etmek isteyen her biri için bir Fragment sınıf oluşturmak istiyorum. Benim örnekte bir MySecondFragment için sınıf ve 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; 
    } 

} 

Ve

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; 
    } 

} 

Herhangi parçası basitçe yapacağınız düzeninde çocukları erişmek için, standart bir xml düzenini dosyasını şişirmek olabilir olurdu Aşağıdakileri kullanmayı hatırlamak zorundayım, örnek olarak MySecondFragment kullanacağım.

sonra diğer bir sayfaya 0 başlatmak için veya

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; 
    } 

} 

Düzenleme:

Diyelim ki id en R.id.button1 ve R.id.button2 'second_fragment' başlıklı bir düzen dosyasında ile iki Buttons var diyelim sadece MainAvticity

kullanabilirsiniz ilk pozisyonu I fragmanı sınıfında bu ekledik
@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

Çok teşekkürler! Sorunuma çözüm bulmak için 2 gün boyunca etrafa baktım! :) – Lasse

+1

Sevindim, iyi şanslar! – jnthnjns

+1

Teşekkürler ve siz de :-) – Lasse

0

..

i got sorunu destek parçası yöneticiyi çözemezse çözemezse olan().

@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); 

} 
İlgili konular