2016-09-29 6 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' 'の宣言は何support.app.fragment使用していますので、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はフラグメントから継承し、フラグメントレイアウトを拡張します。 MainAnavigationDrawerFragmentに到達するために私はmainactivity(prifileview1)でフラグメントをインスタンス化する必要があります。 'MainNavigationDrawerFragment:Android.support.v4.Fragment {}' – coderocks

答えて

0

は、いくつかの掘削後、私はそれを解決しました。ここには2つの問題があります。私はアンドロイドを使用しないようにレイアウトを変更しなければならなかった: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"/> 

第二部では、私は私のフラグメントが

drawerFragment = (MainNavigationDrawerFragment)this.SupportFragmentManager.FindFragmentById(Resource.Id.nav_drwr_fragment); 
関連する問題