我正在使用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);
}
}
答案 0 :(得分:1)
您可以通过以下代码来实现:
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;
}
}
答案 1 :(得分:0)
使用FrameLayout
作为片段容器,然后在其中切换片段。您可以通过将OnNavigationItemSelectedListener
设置为BottomNavigationView
并使用
getSupportFragmentManager().beginTransaction().replace(R.id.frameLayout, selectedFragment).commit();
在片段之间切换。在第二个片段中提到的按钮上,添加onClickListener
并从Activity
调用先前的事务,并将所需的片段作为selectedFragment