JetPack學(xué)習(xí)筆記之Navigation(二)
JetPack引入了NavigationUI組件,使得APP Bar中的按鈕和菜單可以和導(dǎo)航圖中的頁(yè)面關(guān)聯(lián)起來(lái)。比如上文中的例子中,不是通過(guò)按鈕,而是想通過(guò)菜單跳轉(zhuǎn)到第二個(gè)Fragment,可采用如下方式。
1、創(chuàng)建menu.xml文件,并將item的id設(shè)置為第二個(gè)Fragment的id。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/secondFragment"
android:title="跳轉(zhuǎn)"/>
</menu>
2、在Activity中初始化菜單,并相應(yīng)菜單的點(diǎn)擊事件,完整代碼如下:
public class NavigationActivity extends AppCompatActivity {
private AppBarConfiguration appBarConfiguration;
private NavController navController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_navigation);
navController = Navigation.findNavController(this,R.id.nav_host_fragment);
appBarConfiguration = new AppBarConfiguration.Builder(navController.getGraph()).build();
NavigationUI.setupActionBarWithNavController(this,navController,appBarConfiguration);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getMenuInflater().inflate(R.menu.menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
return NavigationUI.onNavDestinationSelected(item,navController) || super.onOptionsItemSelected(item);
}
@Override
public boolean onSupportNavigateUp() {
return NavigationUI.navigateUp(navController,appBarConfiguration) || super.onSupportNavigateUp();
}
}