java - Android – setText to Tabs in a switch case Statement
问题描述
我的应用在activity_main.xml 中包含一个bottomNavigationView 和一个TabLayout。使用 switch-case 选择选定的导航片段,并且选项卡以编程方式命名,如下所示:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
tabLayout.addTab(tabLayout.newTab().setText("A"));
tabLayout.addTab(tabLayout.newTab().setText("B"));
tabLayout.addTab(tabLayout.newTab().setText("C"));
BottomNavigationView bottomNavigationView = (BottomNavigationView)
findViewById(R.id.navigation);
bottomNavigationView.setOnNavigationItemSelectedListener
(new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment selectedFragment = null;
switch (item.getItemId()) {
case R.id.navigation_national:
selectedFragment = ItemOneFragment.newInstance();
break;
case R.id.navigation_international:
selectedFragment = ItemTwoFragment.newInstance();
break;
case R.id.navigation_blackboard:
selectedFragment = ItemThreeFragment.newInstance();
break;
}
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, selectedFragment);
transaction.commit();
return true;
}
});
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.frame_layout, ItemOneFragment.newInstance());
transaction.commit();
}
}
现在我想根据所选的 bottomNavigation 选项更改选项卡名称。为什么我不能只添加 addText(""); 不同情况的陈述?
解决方案
tabLayout.getTabAt(item.getItemId()).setText("Ds");
推荐阅读
- kotlin - 如何迭代字符列表并比较不同的元素
- asp.net - Json.NET 反序列化选择列表/多选列表
- mysql - IntelliJ 中列名旁边的图标是什么意思?
- c# - 仅使用 MSBuild BuildManager 构建单个项目
- javascript - 在循环中更改组件状态
- arrays - 在 go 中创建异构 json 数组
- amazon-web-services - 什么是 AWS Auto Scaling?它对大型项目有什么帮助?
- selenium - 我正在尝试处理自动化框架,但出现空指针异常
- docker - docker-compose.yml 版本 3 中的 mem_limit
- sql-server - SQL ServiceBroker 错误“在 sys.transmission_queue 中找到与同一对等方的先前存在的连接”?