2017-01-28 84 views
0

我在我的應用程序創建tablayout如下:如何從使用選項卡布局的其他Activity啓動活動?

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_place_info); 
     getSupportActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); 
     getSupportActionBar().setCustomView(R.layout.action_bar); 

     TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
     tabLayout.addTab(tabLayout.newTab().setText("الموقع")); 
     tabLayout.addTab(tabLayout.newTab().setText("تفاصيل التصنيف")); 
     tabLayout.addTab(tabLayout.newTab().setText("ساعات العمل")); 
     tabLayout.addTab(tabLayout.newTab().setText("المتطلبات")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
     final PagerAdapter adapter = new PagerAdapter 
       (getSupportFragmentManager(), tabLayout.getTabCount()); 
     viewPager.setAdapter(adapter); 
     viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
     viewPager.setCurrentItem(4); 
     tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
      @Override 
      public void onTabSelected(TabLayout.Tab tab) { 
       viewPager.setCurrentItem(tab.getPosition()); 

       int position = tab.getPosition(); 
       switch(position){ 
        case 0: 
         break; 
        case 1: 
         break; 
        case 2: 
         break; 
        case 3: 
         break; 
       } 

      } 

      @Override 
      public void onTabUnselected(TabLayout.Tab tab) { 

      } 

      @Override 
      public void onTabReselected(TabLayout.Tab tab) { 

      } 
     }); 
    } 

頁適配器:

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: 
      LocationInfoFragment tab1 = new LocationInfoFragment(); 
      return tab1; 
     case 1: 
      RankInfoFragment tab2 = new RankInfoFragment(); 
      return tab2; 
     case 2: 
      WorkingHoursInfoFragment tab3 = new WorkingHoursInfoFragment(); 
      return tab3; 
     case 3: 
      WorkingHoursInfoFragment tab4 = new WorkingHoursInfoFragment(); 
      return tab4; 
     default: 
      return null; 
    } 
} 

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

我知道,當我要開始一個活動我一定要使用Intent如下:

Intent processesListAcitivity = new Intent(getApplicationContext(), ProcessesListAcitivity.class); 
      startActivity(processesListAcitivity); 

我的問題是把它放在哪裏:

switch的第一類,還是在頁面適配器?

+3

最有可能的答案是 「不」。當用戶點擊某個表示是時候開始活動的事物時,您可以開始一個活動,例如「按鈕」或操作欄項目或導航抽屜項目。您不會開始活動,因爲用戶切換到其他選項卡,因爲*用戶無法使用該選項卡的內容*。 – CommonsWare

+0

@CommonsWare:夠公平的,但如何加載我的佈局爲該選項卡?例如,如果我需要顯示一個ListView?!我希望能夠通過製表符更改 –

+1

您想要什麼時候打開您的活動?當用戶切換標籤?如果是這樣,你做錯了。 – AnixPasBesoin

回答

0
private Stack<String> stack; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
if (stack == null) 
    stack = new Stack<String>(); 
// start default activity 
push("FirstStackActivity", new Intent(this, Tab_SampleActivity.class)); 
} 

@Override 
public void finishFromChild(Activity child) { 
pop(); 
} 

@Override 
public void onBackPressed() { 
pop(); 

}

public void push(String id, Intent intent) { 
Window window = getLocalActivityManager().startActivity(id,    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)); 
if (window != null) { 
    stack.push(id); 
    setContentView(window.getDecorView()); 
} 
} 

public void pop() { 
if (stack.size() == 1) 
    finish(); 
LocalActivityManager manager = getLocalActivityManager(); 
manager.destroyActivity(stack.pop(), true); 
if (stack.size() > 0) { 
    Intent lastIntent = manager.getActivity(stack.peek()).getIntent(); 
    Window newWindow = manager.startActivity(stack.peek(), lastIntent); 
    setContentView(newWindow.getDecorView()); 
} 

}

相關問題