2016-09-29 56 views
0

我創建了MainNavigationDrawerFragment主要活動中的片段返回null fragmentmanager.findviewbyid <>

然而,當我嘗試findviewbyId,無論是drawerFragmentdrawerlayout返回null,當我嘗試建立的抽屜裏。

由於此活動是主發射器,因此通過fragmentmanager.findviewbyID(),我預計它會啓動片段onCreateView事件,以便我可以擴充該片段。 Howerver,它返回null。

任何幫助?

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); 
     } 

/////////////////////////這是 佈局/////////// ////////////////////

<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

什麼MainNavigationDrawerFragment'的'聲明使用supportfragmentmanager?你有沒有機會使用'SupportFragment'基類?如果是的話,你必須使用'SupportFragmentManager'來訪問它。 – Krumelur

+0

你也可以在這裏找到一個擴展'DrawerLayout'的例子:https://github.com/xamarin/monodroid-samples/blob/master/android5.0/Cheesesquare/MainActivity.cs *注意:*他們使用' Android.Support.V4.App.Fragment'獲得支持。 –

+0

MainNavigationDrawerFragment從片段中繼承並擴展片段佈局。序才能到MainNavigationDrawerFragment我需要實例中mainactivity(prifileview1)片段 'MainNavigationDrawerFragment:Android.support.v4.Fragment {}' – coderocks

回答

0

一些挖後,我解決了這個問題。這裏有兩個問題。我不得不改變佈局不使用android:name,而是使用class。

<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"/> 

第二部分是,我不得不因爲我的片段使用support.app.fragment

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