2013-07-22 88 views
0

我有以下代碼,它是帶有片段的選項卡布局。我想擺脫tab/pager並只保留1個片段(StickyQuestionDetailsFragment)並讓它顯示活動的全部寬度和高度。如何將選項卡片段活動轉換爲沒有選項卡的正常活動

我已經嘗試從我的活動中打開片段,但我得到了鑄造異常。

public class QuestionDetails extends SherlockFragmentActivity implements ActionBar.TabListener { 
    ViewPager mPager; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.question_details); 

     PagerAdapter adapter = new FragmentStatePagerAdapter(getSupportFragmentManager()) { 
      @Override 
      public Fragment getItem(int position) { 
       switch (position) { 
        case 1: 
         return new QuickReturnFragment(); 
        case 0: 
         return new StickyQuestionDetailsFragment(); 
       } 
       return null; 
      } 

      @Override 
      public int getCount() { 
       return 1;//2 
      } 

      @Override 
      public CharSequence getPageTitle(int position) { 
       switch (position) { 
        case 0: 
         return "Question"; 
        case 1: 
         return "User"; 
       } 
       return null; 
      } 
     }; 

     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(adapter); 
     mPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { 
      @Override 
      public void onPageSelected(int position) { 
       getActionBar().setSelectedNavigationItem(position); 
      } 
     }); 

     mPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.page_margin)); 

     getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     for (int position = 0; position < adapter.getCount(); position++) { 
      getActionBar().addTab(getActionBar().newTab() 
        .setText(adapter.getPageTitle(position)) 
        .setTabListener(this)); 
     } 

     getActionBar().setDisplayShowHomeEnabled(false); 
     getActionBar().setDisplayShowTitleEnabled(false); 
    } 

    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     mPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    } 
} 
+0

還爲動作條下拉列表導航模式。 –

回答

1

如果你需要每個活動只是一個片段,你可以有這種模式(source):

public class QuestionDetails extends SherlockFragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     // If not already added to the Fragment manager add it. If you don't do this a new Fragment will be added every time this method is called (Such as on orientation change) 
     if(savedInstanceState == null) 
      getSupportFragmentManager().beginTransaction().add(android.R.id.content, new StickyQuestionDetailsFragment()).commit(); 
    } 
} 
相關問題