Ich möchte sehen, ob eine -Ansicht vorhanden ist, bevor ein Fragment geladen wird. In meiner Methode, die das Fragment lädt, habe ich unten:

 public void loadFragment(Fragment fragment){
    FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();

    // Begin Fragment transaction.
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();// Replace the layout holder with the required Fragment object.


    fragmentTransaction.replace(R.id.outbound_dashboard_hourly_queued, fragment);
    // Commit the Fragment replace action.
    fragmentTransaction.commit();

}

Ich möchte vor dem Laden überprüfen, ob R.id.outbound_dashboard_hourly_queued vorhanden ist

Wie gehe ich vor?

1
Geoff 18 Jän. 2019 im 10:03

4 Antworten

Beste Antwort

Führen Sie einfach findViewById(R.id.outbound_dashboard_hourly_queued) aus und laden Sie das Fragment, wenn die Ansicht nicht Null ist. Führen Sie eine if-Prüfung durch.

public void loadFragment(Fragment fragment){
    FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();

    // Begin Fragment transaction.
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();// Replace the layout holder with the required Fragment object.
    View yourView= findViewById(R.id.outbound_dashboard_hourly_queued);
    if(yourView!=null){
    fragmentTransaction.replace(R.id.outbound_dashboard_hourly_queued, fragment);
    // Commit the Fragment replace action.
    fragmentTransaction.commit();
  }

}
1
Anmol 18 Jän. 2019 im 07:10

Versuche dies

Prüfung ist Fragment hinzugefügt oder nicht

 if (getCurrentFragment() instanceof YourFragment)

Fragment hinzufügen

replaceFragment(new HomeFragment(), "YourFragment");

Methoden

    private void replaceFragment(Fragment fragment, String tag)
    {
        Fragment currentFragment = getCurrentFragment();
        if (currentFragment != null)
            getSupportFragmentManager().beginTransaction().remove(currentFragment).commit();

        getSupportFragmentManager().beginTransaction().add(R.id.container_main, fragment, tag).commit();
    }

    public Fragment getCurrentFragment()
    {
        FragmentManager manager = getSupportFragmentManager();
        return manager.findFragmentById(R.id.container_main);
    }

    private void popBackStack()
    {
        FragmentManager fragmentManager = getSupportFragmentManager();
        int total = fragmentManager.getBackStackEntryCount();
        for (int i = 0; i < total; i++)
        {
            fragmentManager.popBackStack();
        }

    }
0
Parag Ghetiya 18 Jän. 2019 im 07:09

Mit der von FragmentManager bereitgestellten findFragmentByTag-Methode (String tag) können Sie überprüfen, ob das Fragment bereits vorhanden ist oder nicht.

Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG);

Damit dies funktioniert, müssen Sie Ihr Fragment mit diesem TAG mit - festschreiben.

fragmentTransaction.replace(R.id.outbound_dashboard_hourly_queued, fragment, TAG);

0
Vishal Arora 18 Jän. 2019 im 09:35

Bitte befolgen Sie die Zählprüfung vor dem Ersetzen, wenn die Anzahl == 0 add else else replace your code wie folgt sein muss

public void loadFragment(Fragment fragment){
    FragmentManager fragmentManager = Objects.requireNonNull(getActivity()).getSupportFragmentManager();

    // Begin Fragment transaction.
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();// Replace the layout holder with the required Fragment object.

    if(fragmentManager.getFragments().size() == 0){
        fragmentTransaction.add(R.id.outbound_dashboard_hourly_queued, fragment).commit();
    }else {
        fragmentTransaction.replace(R.id.outbound_dashboard_hourly_queued, fragment).commit();
    }
    // Commit the Fragment replace action.

}

Bitte versuchen Sie es damit und lassen Sie es mich wissen.

0
Sumanta Banerjee 18 Jän. 2019 im 13:33