[英]Bottom Navigation Activity with external button
我正在使用來自 Android Studio 的底部導航活動
設置所有需要的底部選項卡后,我需要為一個片段添加附加按鈕,但要在選項卡區域之外。 並且該按鈕僅在調用第二個片段時出現。 像下圖這樣的東西
我在 navigation/mobile_navigation.xml 中設置了新片段
<fragment
android:id="@+id/navigation_demografski"
android:name="com.home.Fragment1"
android:label="Podaci o osobama"
tools:layout="@layout/fragment_home" />
<fragment
android:id="@+id/navigation_biometrijski"
android:name="com.home.Fragment2"
android:label="Biometrijski podaci - Desna Ruka"
tools:layout="@layout/fragment_dashboard" />
<fragment
android:id="@+id/navigation_biometrijski2"
android:name="com.home.Fragment3"
android:label="Biometrijski podaci - Lijeva Ruka"
tools:layout="@layout/fragment_dashboard2" />
但是我不知道如何從第二個片段調用第三個片段。 我嘗試使用fragmet.replace()
但它只是將一個片段重疊在另一個片段上。
選項卡式活動
public class TabbedActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tabbed);
BottomNavigationView navView = findViewById(R.id.nav_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_demografski, R.id.navigation_biometrijski).build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
}
}
使用FrameLayout
作為片段容器,然后在其中切換片段。 您可以通過將OnNavigationItemSelectedListener
設置為BottomNavigationView
並使用
getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, selectedFragment).commit();
在片段之間切換。 在第二個片段中提到的按鈕上添加onClickListener
並從Activity
調用先前的事務並將所需的片段作為 selectedFragment
你可以按照我下面的代碼來實現:
public class MainActivity extends AppCompatActivity implements BottomNavigationView.OnNavigationItemSelectedListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//loading the default fragment
loadFragment(new HomeFragment());
//getting bottom navigation view and attaching the listener
BottomNavigationView navigation = findViewById(R.id.navigation);
navigation.setOnNavigationItemSelectedListener(this);
}
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment = null;
switch (item.getItemId()) {
case R.id.navigation_home:
fragment = new HomeFragment();
break;
case R.id.navigation_dashboard:
fragment = new DashboardFragment();
break;
case R.id.navigation_notifications:
fragment = new NotificationsFragment();
break;
case R.id.navigation_profile:
fragment = new ProfileFragment();
break;
}
return loadFragment(fragment);
}
private boolean loadFragment(Fragment fragment) {
//switching fragment
if (fragment != null) {
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container, fragment)
.commit();
return true;
}
return false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.