2015-02-11 33 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

相關問題