2016-09-29 3 views
0

Ich habe die MainNavigationDrawerFragment erstellt.Fragment in Hauptaktivität zurückgibt null fragmentmanager.findviewbyid <>

Allerdings, wenn ich zu findviewbyId versuchen, sowohl die drawerFragment und drawerlayout kehrt null, wenn ich versuche, Schublade einzurichten.

Da diese Aktivität ist der Haupt-Launcher, durch die fragmentmanager.findviewbyID(), würde ich erwarten, dass es das Fragment onCreateView Ereignis auslösen, so dass ich das Fragment aufblasen kann. Allerdings kehrt es null zurück.

Irgendwelche Hilfe?

public class ProfileView1 : AppCompatActivity 
    { 
     protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      // Create your application here 
      SetContentView(Resource.Layout.ProfileView2); 
      // other code.... 

      // Navigation Drawer 
      SetUpDrawer(); 
     } 

     private void SetUpDrawer() 
     { 
      **MainNavigationDrawerFragment drawerFragment = 
       FragmentManager.FindFragmentById<MainNavigationDrawerFragment> 
                 (Resource.Id.nav_drwr_fragment); 

      DrawerLayout drawerLayout = FindViewById<DrawerLayout>**(Resource.Id.drawer_layout);** 
      drawerFragment.SetUpDrawer(Resource.Id.nav_drwr_fragment, drawerLayout, toolBar); 
     } 

///////////////////////// Dies ist Layout /////////// ////////////////////

<android.support.v4.widget.DrawerLayout 
    android:id="@+id/drawer_layout" 
    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:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <include 
     layout="@layout/ToolBarOnlyLayout" 
     android:id="@+id/toolbarProfile" /> 
    <include 
     layout="@layout/ProfileMainPageLayout" 
     android:id="@+id/profileMainPageCardView" /> 
    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recentSearchRecyclerView" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
    </LinearLayout> 

    <fragment 
     android:id="@+id/nav_drwr_fragment" 
     android:name="UserProfile.Fragments.MainNavigationDrawerFragment" 
     android:layout_width="@dimen/nav_drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:layout="@layout/navigationdrawer_main_fragment" 
     tools:layout="@layout/navigationdrawer_main_fragment"/> 
</android.support.v4.widget.DrawerLayout> 
+1

support.app.fragment verwendet Was die Deklaration von 'MainNavigationDrawerFragment' ist? Verwenden Sie zufällig die Basisklasse 'SupportFragment'? Wenn ja, müssen Sie 'SupportFragmentManager' verwenden, um darauf zuzugreifen. – Krumelur

+0

Hier finden Sie auch ein Beispiel für das Aufblasen eines 'DrawerLayout': https://github.com/xamarin/monodroid-samples/blob/master/android5.0/Cheesquare/MainActivity.cs * Hinweis: * Sie verwenden' Android.Support.V4.App.Fragment' für die Unterstützung. –

+0

MainNavigationDrawerFragment erbt von Fragment und bläst das Fragmentlayout auf. Um zum MainNavigationDrawerFragment zu kommen, muss ich das Fragment in der Hauptaktivität (prifileview1) instanziieren 'MainNavigationDrawerFragment: Android.support.v4.Fragment {}' – coderocks

Antwort

0

Nach einigem Graben, ich löste es. Es gibt 2 Probleme hier. Ich musste das Layout ändern, um Android nicht zu verwenden: Name aber Klasse.

<fragment 
     android:id="@+id/nav_drwr_fragment" 
     *class="UserProfile.Fragments.MainNavigationDrawerFragment"* 
     android:layout_width="@dimen/nav_drawer_width" 
     android:layout_height="match_parent" 
     android:layout_gravity="start" 
     app:layout="@layout/navigationdrawer_main_fragment" 
     tools:layout="@layout/navigationdrawer_main_fragment"/> 

Der zweite Teil ist, dass ich supportfragmentmanager verwenden musste, da mein Fragment

drawerFragment = (MainNavigationDrawerFragment)this.SupportFragmentManager.FindFragmentById(Resource.Id.nav_drwr_fragment); 
Verwandte Themen