【发布时间】:2016-11-01 13:57:43
【问题描述】:
如果这个问题不恰当,我很抱歉,但我需要一些帮助。我有一个 3-tabs 应用程序,打开应用程序时会查看第一个选项卡。
目的:注册后,用户将在第三个标签中查看他们的个人资料。
我做了什么:在RegisterActivity中,我在bundle中设置了一个值,它将传递给MainActivity
Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
intent.putExtra("profile", 2);
intent.putExtra("from", "register");
所以在MainActivity,
profile = getIntent().getExtras().getInt("profile");
from = getIntent().getExtras().getString("from");
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));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(profile);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
我设法从RegisterActivity 获取值,但我不知道应该将int profile 值放在哪里。我希望将值传递给PagerAdapter 中的getItem 方法。
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:
SearchGroupsFragment searchGroupsFragment = new SearchGroupsFragment();
return searchGroupsFragment;
case 1:
RegisterGroupFragment registerGroupFragment = new RegisterGroupFragment();
return registerGroupFragment;
case 2:
ProfileFragment profileFragment = new ProfileFragment();
return profileFragment;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
这样当用户注册成功后,他们会直接查看第三个标签。或者有什么其他方式可以查看?
谢谢。
编辑
我按照下面的答案并设法得到我想要的 - 在RegisterActivity 之后,我得到的视图是第三个选项卡及其布局。但是当我移动到第二个或第一个选项卡时,布局不会改变。选项卡更改没有动画或移动。简而言之,第三个选项卡的布局“卡住”了,第二个和第一个选项卡的布局没有改变。
【问题讨论】:
标签: android android-fragments android-viewpager android-toolbar android-tablayout