代码地址
代码
市面上很多
app
都是底部几个Tab
然后点击切换页面,ViewPager
和Fragment
也可以实现,
但是这里使用的是一个FrageLayou
切换不同的Fragment
.
博客只给出关键的代码,其余的代码请在上面的链接里查看
public class MainActivity extends AppCompatActivity {
private Fragment fragmentOne, fragmentTwo;
private static final String FRAGMENT_ONE = "one";
private static final String FRAGMENT_TWO = "two";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTabSelect(0);
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.rg_group);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
switch (i) {
case R.id.rb_one:
setTabSelect(0);
break;
default:
setTabSelect(1);
break;
}
}
});
}
private void setTabSelect(int i) {
FragmentManager manager = getSupportFragmentManager();
FragmentTransaction transaction = manager.beginTransaction();
switch (i) {
case 0:
fragmentOne = manager.findFragmentByTag(FRAGMENT_ONE);
hideTab(transaction);
if (null == fragmentOne) {
fragmentOne = FragmentOne.startFragment();
transaction.add(R.id.fragment, fragmentOne, FRAGMENT_ONE);
} else {
transaction.show(fragmentOne);
}
break;
case 1:
fragmentTwo = manager.findFragmentByTag(FRAGMENT_TWO);
hideTab(transaction);
if (null == fragmentTwo) {
fragmentTwo = FragmentTwo.startFragment();
transaction.add(R.id.fragment, fragmentTwo, FRAGMENT_TWO);
} else {
transaction.show(fragmentTwo);
}
break;
}
transaction.commit();
}
private void hideTab(FragmentTransaction transaction) {
if (null != fragmentOne) {
transaction.hide(fragmentOne);
}
if (null != fragmentTwo) {
transaction.hide(fragmentTwo);
}
}
}
近期评论