我正在使用Android Jetpack 的新导航组件.
根Activity设置非常简单:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
setSupportActionBar(toolbar)
val navController = findNavController(R.id.navigationFragment)
setupActionBarWithNavController(navController)
bottomNavigationView.setupWithNavController(navController)
}
Run Code Online (Sandbox Code Playgroud)
当导航图中定义了Fragment的标题时,它很有效.但对于一个片段,我想动态设置标题.
我尝试过,findNavController().currentDestination.label = "Hello world"但它没有做任何事情.
我当然可以使用类似的技巧(activity as? AppCompatActivity)?.supportActionBar?.title = "Hello world",但我觉得它会打破对我有用的魔力setupActionBarWithNavController().有没有办法动态更新动作栏标题?
我正在尝试动态设置工具栏标题,我不知道是否可能。
假设我有我单击的每个项目的项目列表,它是打开的新片段,因此我尝试动态更改每个项目的工具栏标题。
我试过 :
it.findNavController().navigate(direction)
it.findNavController().currentDestination!!.label = someTitle
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
有一些相关的主题,即:
但这并不能有效地解决我的问题,这是一种解决方法。
android android-architecture-components android-architecture-navigation
我正在尝试Android 导航架构组件,并且还在研究材料设计指南.我真的受到以下设计的启发:
对于顶部工具栏,我可以设置它setSupportActionBar(toolbar),然后在MainActivity:
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)
但是在尝试时我无法弄清楚如何在顶部和底部应用栏上为不同的片段实现菜单,特别是对于底部应用栏.
例如,我想在底部应用栏上显示一个喜欢的图标DetailFragment,但是MainActivity,它应该消失了.
我目前的代码:
主要活动
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
NavController navController = Navigation.findNavController(this, R.id.nav_host);
NavigationUI.setupActionBarWithNavController(this, navController);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(view -> Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show());
}
@Override
public boolean onSupportNavigateUp() …Run Code Online (Sandbox Code Playgroud) android android-layout android-jetpack android-bottomappbar androidx