簡體   English   中英

帶有外部按鈕的底部導航活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM