2015-02-11 58 views
0

我有一个在sweapable选项卡视图中的一个片段,我想在必需的片段(它在第五个选项卡中)显示我的电子邮件地址。当我使用这个代码时,它直接加载第5个屏幕。我如何改变它。 我想先加载第一个选项卡作为正常选项卡。避免加载第一个尝试在我的android swipeable选项卡中的第五个选项卡

我用这个答案,Intent within fragment works only half the time

公共类ActivityMenu扩展FragmentActivity实现 ActionBar.TabListener {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_menu); 
-----tag----------------------------------------------------- 
    Fragment fragment = new ProfileFragment(); 
    Bundle bundle = new Bundle(); 

    // Put variables in bundle and add to fragment 
    bundle.putString("user", getIntent().getStringExtra("user")); 
    fragment.setArguments(bundle); 

    // Insert the fragment 
    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager 
      .beginTransaction() 
      .add(android.R.id.content, fragment) 
      .commit(); 
--------------------------------------------------------------------- 

//  String email = getIntent().getStringExtra("user"); 

    // Initilization 
    viewPager = (ViewPager) findViewById(R.id.pager); 
    actionBar = getActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setDisplayShowHomeEnabled(false); 
    actionBar.setDisplayShowTitleEnabled(true); 
    actionBar.setDisplayUseLogoEnabled(true); 

    mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 

    actionBar.addTab(actionBar.newTab().setTabListener(this) 
      .setIcon(R.drawable.ic_tab_p)); 
    actionBar.addTab(actionBar.newTab().setTabListener(this) 
      .setIcon(R.drawable.ic_tab_n)); 
    actionBar.addTab(actionBar.newTab().setTabListener(this) 
      .setIcon(R.drawable.ic_tab_s)); 
    actionBar.addTab(actionBar.newTab().setTabListener(this) 
      .setIcon(R.drawable.ic_tab_p)); 
    actionBar.addTab(actionBar.newTab().setTabListener(this) 
      .setIcon(R.drawable.ic_tab_p)); 
    ActionBar bar = getActionBar(); 
    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
    // set background for action bar tab 
    bar.show(); 

    viewPager.setAdapter(mAdapter); 
    actionBar.setHomeButtonEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

适配器

public class TabsPagerAdapter extends FragmentPagerAdapter { 

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

    @Override 
    public Fragment getItem(int index) { 

     switch (index) { 
     case 0: 
      // Top Rated fragment activity 
      return new PFragment(); 
     case 1: 
      // Games fragment activity 
      return new PiFragment(); 
     case 2: 
      // Movies fragment activity 
      return new SFragment(); 
     case 3: 
      // Movies fragment activity 
      return new PFragment(); 
     case 4: 
      // Movies fragment activity 
      return new PrFragment(); 
     } 

     return null; 
    } 

    @Override 
    public int getCount() { 
     // get item count - equal to number of tabs 
     return 5; 
    } 

} 

我想我得到这个,因为即时创建新捆绑,但我如何克服它,任何帮助将高度赞赏。

+0

显示你的适配器类 – Xcihnegn 2015-02-11 10:11:24

+0

你可以检查我更新的问题,我已经显示了2个虚线内的一些代码。如果我删除了那段代码,那么标签完全可以工作 – 2015-02-11 10:43:26

+0

为什么你把这些代码放在点线内?他们应该在适配器 – Xcihnegn 2015-02-11 11:05:16

回答

1

在活动中,onCreate()得到emailStr,并删除所有其他虚线,例如适配器与额外的参数emailStr

String emailStr = getIntent().getStringExtra("user"); 

mAdapter = new TabsPagerAdapter(getSupportFragmentManager(), emailStr); 

在适配器,改变相应的构造函数,并设置参数为5片片段:

private String user = null; 

public TabsPagerAdapter(FragmentManager fm, String user) { 
    super(fm); 

    this.user = user; 
} 

... ... 

//add those codes to 5th tab fragment 
Fragment fragment = new ProfileFragment(); 
Bundle bundle = new Bundle(); 
bundle.putString("email", user); 
fragment.setArguments(bundle); 
return fragment; 

希望这会工作!

+0

这真的对我有用 – 2015-02-12 05:12:18

相关问题