2012-05-21 51 views
1

我正在開發一個應用程序,它由具有三個片段的FragmentActivity組成。我想從第一個片段到第三個片段,最後一個片段用「下一個」按鈕。爲此,我使用viewPager和pagerAdpater(我禁用了viewpager上的分頁/划動)。我的「下一個」按鈕已經在他們自己的片段中實現。我有一個xml佈局的每個片段和一個fragmentActivity包含viewpager。onClickListener(按鈕)使用片段切換ViewPager的視圖

我想使用一個OnClickListener,我可以使用setCurrentItem(index)方法,並從第一個視圖到最後一個視圖。

問題是,我不知道我可以把OnClickListener放在哪裏,因爲我沒有我的片段中的viewpager引用。

如何在我的片段中獲得viewpager引用?我必須把我的OnClickListener方法放在別的地方嗎?

這裏是我的3個片段之一的代碼:

public class InitializationStep1 extends Fragment{ 
private PagerAdapter mPagerAdapter; 

CustomViewPager pager; 

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

    View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false); 

    Button button = (Button) v.findViewById(R.id.goToStep2); 
    button.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      CustomViewPager pager = (CustomViewPager) v.findViewById(R.id.viewpager); 
      if(pager == null) 
       System.out.println("It's null..."); // always getting a null value 
      else 
       pager.setCurrentItem(0); 
     } 
    }); 

    return v; 
} 
@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    setUserVisibleHint(true); 
    } 
} 

,這是我FragmentActivity:

public class Initialization extends FragmentActivity{ 
private PagerAdapter mPagerAdapter; 

CustomViewPager pager; 
Button b1; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    super.setContentView(R.layout.viewpager_initialization_layout); 

    //initialize the pager 

    List<Fragment> fragments = new Vector<Fragment>(); 
    fragments.add(Fragment.instantiate(this, InitializationStep1.class.getName())); 
    fragments.add(Fragment.instantiate(this, InitializationStep2.class.getName())); 
    fragments.add(Fragment.instantiate(this, InitializationStep3.class.getName())); 
    this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); 

    pager = (CustomViewPager)super.findViewById(R.id.viewpager); 
    pager.setPagingEnabled(false); 
    pager.setAdapter(this.mPagerAdapter); 
    pager.setCurrentItem(0); 
    } 
} 

總結這一切,我有:
- 實施3個片段(1,2和3)
我希望得到:
- 每個片段包含一個按鈕以進入下一個片段(1→2→3)。
- 包含「完成」按鈕,最後一個片段(因爲沒有下一個片段 - 導航到)

我認爲這是一個很簡單的動作,但我在Android開發相對較新,不能想出解決辦法。我可能試圖用錯誤的組件來做到這一點。

謝謝

回答

2

我剛剛有同樣的問題,試試這個!在初始化FragmentActivity:

public CustomViewPager getpager(){ 
     return pager; 
    } 

在「InitializationStep1」:

CustomViewPager pager; 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false); 
    pager = ((Initialization)getActivity()).getpager(); 

    Button next = (Button) v.findViewById(R.id.button1); 
    next.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      pager.setCurrentItem(2); 
     } 
    }); 

通過這種方式,你可以得到您在FragmentActivity聲明viewpager對象,所以你可以在每個片段用它來根據需要在片段之間切換!

+0

工作......... –