2017-02-27 44 views
0

我試圖誇大家庭片段類,我得到這個錯誤:C# - Xamarin片段類沒有被主要活動的認可

類型或命名空間名稱「DashboardFragment」找不到(是否缺少using指令或程序集引用?)

這是我的主要活動類:

using Android.App; 
using Android.Widget; 
using Android.OS; 
using Android.Support.Design.Widget; 
using SupportFragment = Android.Support.V4.App.Fragment; 
using Android.Support.V4.Widget; 
using Android.Support.V7.App; 
using Android.Views; 



namespace LottoGenie.Androidv2 
{ 
[Activity(Label = "LottoGenie.Androidv2", MainLauncher = true, Icon ="@drawable/ic_launcher")] 
public class MainActivity : Activity 
{ 
    private DrawerLayout drawerLayout; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Main); 
     drawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout); 

     var toolbar = FindViewById<Toolbar>(Resource.Id.app_bar); 
     SetActionBar(toolbar); 
     ActionBar.SetTitle(Resource.String.ApplicationName); 
     ActionBar.SetDisplayHomeAsUpEnabled(true); 
     ActionBar.SetDisplayShowHomeEnabled(true); 

     var navigationView = FindViewById<NavigationView>(Resource.Id.nav_view); 
     navigationView.NavigationItemSelected += NavigationView_NavigationItemSelected; 

     var drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, Resource.String.open_drawer, Resource.String.close_drawer); 
     drawerLayout.AddDrawerListener(drawerToggle); 
     drawerToggle.SyncState(); 



     var ft = this.FragmentManager.BeginTransaction(); 

     ft.AddToBackStack(null); 
     ft.Add(Resource.Id.HomeFrameLayout, new DashboardFragment()); 
     ft.Commit(); 

    } 

    protected override void OnResume() 
    { 
     ActionBar.SetTitle(Resource.String.ApplicationName); 
     base.OnResume(); 
    } 

    void NavigationView_NavigationItemSelected(object sender, NavigationView.NavigationItemSelectedEventArgs e) 
    { 
     switch (e.MenuItem.ItemId) 
     { 
      case (Resource.Id.nav_home): 
       Toast.MakeText(this, "Home!", ToastLength.Short).Show(); 
       break; 
      case (Resource.Id.nav_powerball): 
       Toast.MakeText(this, "Powerball Picks!", ToastLength.Short).Show(); 
       break; 
      case (Resource.Id.nav_megamillions): 
       Toast.MakeText(this, "MegaMillions Picks!", ToastLength.Short).Show(); 
       break; 
      case (Resource.Id.nav_jumbobucks): 
       Toast.MakeText(this, "Jumbobucks Picks!", ToastLength.Short).Show(); 
       break; 

     } 
     drawerLayout.CloseDrawers(); 
    } 

    public override bool OnCreateOptionsMenu(Android.Views.IMenu menu) 
    { 
     MenuInflater.Inflate(Resource.Menu.action_menu, menu); 
     if (menu != null) 
     { 
      menu.FindItem(Resource.Id.action_refresh).SetVisible(true); 
     } 
     return base.OnCreateOptionsMenu(menu); 
    } 

    public override bool OnOptionsItemSelected(IMenuItem item) 
    { 
     switch (item.ItemId) 
     { 
      case Android.Resource.Id.Home: 
       return true; 
      default: 
       return base.OnOptionsItemSelected(item); 
     } 
    } 

    public override void OnBackPressed() 
    { 
     if (FragmentManager.BackStackEntryCount != 0) 
     { 
      FragmentManager.PopBackStack(); 
     } 
     else 
     { 
      base.OnBackPressed(); 
     } 
    } 
} 
} 

這是我的片段類:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

using Android.App; 
using Android.Content; 
using Android.OS; 
using Android.Runtime; 
using Android.Util; 
using Android.Views; 
using Android.Widget; 

namespace LottoGenie.Androidv2 
{ 
public class DashboardFragment : Fragment 
{ 
    public override void OnCreate(Bundle savedInstanceState) 
    { 
     base.OnCreate(savedInstanceState); 

     // Create your fragment here 
    } 

    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     // Use this to return your custom view for this Fragment 
     // return inflater.Inflate(Resource.Layout.YourFragment, container, false); 
     View view = inflater.Inflate(Resource.Layout.homeLayout, container, false); 
     return view;//base.OnCreateView (inflater.Inflate(Resource.Layout.homeLayout, container, savedInstanceState); 
    } 
} 
} 

我在想什麼?提前致謝。

+0

我記得有同樣的問題。我的一個班級沒有在自動完成中顯示。我的項目在其他文件中有錯誤。一旦我解決了它們,它就開始顯示。重建您的項目以檢查是否有任何錯誤。 – HeisenBerg

回答

0

我找到了解決辦法。事實證明,我有新的字符串和視圖沒有更新到資源設計器文件。我只好先這些線路中的.csproj的文件添加到第一的PropertyGroup:

<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix> 
<AndroidResgenClass>Resource</AndroidResgenClass> 

之後,我進行了清潔和重建。然後,我刪除了上面的行,並運行另一個版本。這解決了它!謝謝