【发布时间】:2018-01-12 20:34:02
【问题描述】:
所以我有一个奇怪的问题。基本上我有一个带有四个按钮的主要活动,每个按钮打开一个不同的选项卡(有 4 个选项卡)。现在,如果我单击第 4 个按钮,我会转到第 4 个片段,但是如果我尝试单击选项卡式活动中的第一个选项卡,它不会执行任何操作。
所以如果我从第 2、第 3 或第 4 开始,除非我先点击任何其他标签,否则我无法转到第一个标签。
这只是第一个像这样工作的标签,这让我觉得也许有一些值应该在菜单按钮点击时改变,但没有?
这是我的 TabsActivity onCreate:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabs);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
// Create the adapter that will return a fragment for each of the three
// primary sections of the activity.
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.container);
mViewPager.setAdapter(mSectionsPagerAdapter);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
//
int defaultValue = 5;
//int page = getIntent().getIntExtra("One", defaultValue);
mViewPager.setCurrentItem(getIntent().getIntExtra("One", defaultValue));
//
//
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
//
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager))
这里还有一个负责选择片段的 TabsActivity 类:
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
tab1recipes tab1 = new tab1recipes();
return tab1;
case 1:
tab2timer tab2 = new tab2timer();
return tab2;
case 2:
tab3measure tab3 = new tab3measure();
return tab3;
case 3:
tab4substit tab4 = new tab4substit();
return tab4;
default:
return null;
}
}
这里是 MainActivity:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn1 = (Button) findViewById(R.id.recipesbtn);
Button btn2 = (Button) findViewById(R.id.timerbtn);
Button btn3 = (Button) findViewById(R.id.measurebtn);
Button btn4 = (Button) findViewById(R.id.subsbtn);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int page=0;
Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
intent.putExtra("One", page);
startActivity(intent);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int page=1;
Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
intent.putExtra("One", page);
startActivity(intent);
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int page=2;
Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
intent.putExtra("One", page);
startActivity(intent);
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int page=3;
Intent intent = new Intent(MainActivity.this, TabsActivity.class);//startActivity();
intent.putExtra("One", page);
startActivity(intent);
}
});
【问题讨论】:
标签: java android android-fragments tabs