Android Probleme mit Navigation-Fragments?

Hallo,
ich versuche schon seit einiger Zeit die Fragments von meiner Navigation, einer Variable zuzuweisen, leider ohne erfolg.
Das Fragment ist hier definiert:
Java:
<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mobile_navigation"
    app:startDestination="@+id/nav_cat">

    <fragment
        android:id="@+id/nav_cat"
        android:name="de.test.CatFragment"
        android:label="@string/menu_cat"
        tools:layout="@layout/fragment_cat" />
</navigation>
und hier ist die MainActivity.java Datei:
Java:
public class MainActivity extends AppCompatActivity {

    private AppBarConfiguration mAppBarConfiguration;
    private Realm realm;
    private CatFragment catFragment;

    public CatFragment getCatFragment() {
        return catFragment;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
      
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_cat)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);

        //Hier soll das Fragment in catFragment zugewiesen werden----------<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
        catFragment = (CatFragment) getSupportFragmentManager().findFragmentById(R.id.nav_cat);

        if(catFragment != null){
            Toast.makeText(MainActivity.this, "Gefunden", Toast.LENGTH_LONG).show();
            catFragment.test();
        } else {
            Toast.makeText(MainActivity.this, "Nicht gefunden", Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
}
Das klappt einfach nicht.

Das Fragment wird in meiner App angezeigt, nur möchte ich dieses Fragment auch in einer Variable zuweisen, um auf dieses Fragment später zuzugreifen, um weitere Aktionen durchführen zu können.

Hier versuche ich das Fragment ausfindig zu machen:
Java:
catFragment = (CatFragment) getSupportFragmentManager().findFragmentById(R.id.nav_cat);
if(catFragment != null){
    Toast.makeText(MainActivity.this, "Gefunden", Toast.LENGTH_LONG).show();
    catFragment.test();
} else {
    Toast.makeText(MainActivity.this, "Nicht gefunden", Toast.LENGTH_LONG).show();
}
Leider ist catFragment immer null.

Was habe ich falsch gemacht?
Wie könnte ich am einfachsten das Fragment in einer Variable speichern, um über diese Variable dann auf das Fragment zuzugreifen?

Ich bedanke mich schon mal für die Hilfe.

Gruss
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben