Wie ein default-fragment in Android-Studio-Navigation Schublade?
Ich bin auf der Suche nach einem Weg, um se eine default-fragment in meine navigation Schublade, die nicht auf das Element # 0 aus. Ich habe einige Lösungen gesehen, die basierend auf der überprüfung, ob savedInstanceState null ist oder nicht, aber ich fühle mich wie ich haben keinen Zugang zu dieser in meinen onNavigationDrawerItemSelected Methode. Hier ist meine Klasse:
public class Main extends ActionBarActivity
implements NavigationDrawerFragment.NavigationDrawerCallbacks {
/**
* Fragment managing the behaviors, interactions and presentation of the navigation drawer.
*/
private NavigationDrawerFragment mNavigationDrawerFragment;
/**
* Used to store the last screen title. For use in {@link #restoreActionBar()}.
*/
private CharSequence mTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mNavigationDrawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);
mTitle = getTitle();
//Set up the drawer.
mNavigationDrawerFragment.setUp(
R.id.navigation_drawer,
(DrawerLayout) findViewById(R.id.drawer_layout));
}
@Override
public void onNavigationDrawerItemSelected(int position) {
//update the Main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new HomeFragment();
break;
case 2:
fragment = new HomeFragment();
break;
default:
fragment = new DiscoverFragment();
}
if (fragment != null) {
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment).commit();
}
}
- Sie finden meine Antwort in der post unter Set Erste Fragment on startup
InformationsquelleAutor ArnaudToutain | 2014-07-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort ist ziemlich einfach. Da die DrawerLayout Blättern Sie zum verwalten der Fragmente auf Ihre eigenen, können Sie einfach die grundlegenden FragmentManager-APIs, die verwendet werden, in einem normalen FragmentActivity.
Ich die folgende Methode verwenden, um es ein wenig einfacher, an die Stelle der aktuellen Fragmente, auch wenn es gegenwärtig keine zum container Hinzugefügt werden. Einfach diese Methode aufrufen, mit der fragment Sie als Standardwert festlegen möchten, die in Ihrer onCreate () - Methode.
Beachten Sie, dass es technisch mehr richtig zu verwenden
.add(fragment)
für den ersten call statt.replace
da Sie nicht das ersetzen von allem, aber es ist wirklich egal, weil intern, es im Grunde nur entfernt alle vorhandenen Fragmente und fügt die neuen mit.add()
für Siehttp://developer.android.com/reference/android/app/FragmentTransaction.html#replace(int,android.app.Fragment,java.lang.String)