Hallo,
ich versuche schon seit einiger Zeit die Fragments von meiner Navigation, einer Variable zuzuweisen, leider ohne erfolg.
Das Fragment ist hier definiert:
und hier ist die MainActivity.java Datei:
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:
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
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>
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 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();
}
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: