2017-03-09 34 views
0

我正試圖實現選項卡片段。如果我觸摸一個標籤想要開始新的活動。在這種情況下,我用意圖開始新的活動,但它不工作。如何在這裏添加意圖。將意圖實施到FragmentStatePagerAdapter

public class PagerAdapter extends FragmentStatePagerAdapter { 
int mNumOfTabs; 

public PagerAdapter(FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mNumOfTabs = NumOfTabs; 
} 

@Override 
public Fragment getItem(int position) { 

    switch (position) { 

     case 0: 
      Intent intent = new Intent(new MainActivity(), Alarm.class); 
      startActivity(intent); 

     default: 
      return null; 
    } 
} 

@Override 
public int getCount() { 
    return mNumOfTabs; 
} 

回答

0

如果我輕觸想要一個選項卡,開始新的活動

一個FragmentPagerAdapter顯示片段getItem()方法。它不啓動活動。

@Override 
public Fragment getItem(int position) { 
    Fragment f = null; 
    switch (position) { 
     case 0: 
      f = new AlarmFragment(); 
      break; 
     default: 
      break; // returning null could cause errors, though 

    } 
    return f; 
} 

如果你真的想要這個功能,雖然

1)new Intent()需要Context,而不是一個Activity明確。

2)千萬不要製造new SomeActivity(),因爲它是非託管的,你會遇到問題。

像任何其他適配器,您可以通過一個Context

private Context mContext; 
public PagerAdapter(Context context, FragmentManager fm, int NumOfTabs) { 
    super(fm); 
    this.mContext = context; 
    this.mNumOfTabs = NumOfTabs; 
} 

,並使用該

Intent intent = new Intent(this.mContext, Alarm.class); 
+0

它的工作。很好的解釋。謝謝兄弟。 – ManojKanth

0

你確定嗎? PagerAdapter更改ViewPager中的碎片。 如果您希望在標籤項目點擊上開始活動,您需要TabLayout。 但是,如果你想改變頁面,你必須返回一個片段 getItem(int position)方法