2017-01-28 4 views
0

私は次のように私のアプリでtablayoutを作成しました:タブレイアウトを使用する別のアクティビティからアクティビティを開始するにはどうすればよいですか?

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の0

、またはページアダプタの!

+3

はほとんどの場合、答えは "どちらも" です。あなたは、 'Button'やアクションバー項目やnavドロワー項目のように、アクティビティーを開始する時間を示す何かをユーザーがクリックすると、アクティビティーを開始します。ユーザーが他のタブに切り替わったためにアクティビティを開始しない。なぜなら、*そのユーザーはそのタブの内容で作業することができないからです。 – 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()); 
} 

}

関連する問題