2017-02-27 4 views
0

Ich bin versucht, ein Haus Fragment Klasse aufzublasen und ich bekomme diese Fehlermeldung:C# - Xamarin Fragment Klasse wird nicht von Hauptaktivität erkannt

Der Typ oder Namespace-Name ‚DashboardFragment‘ konnte nicht gefunden werden (möglicherweise fehlt eine using-Direktive oder ein Assemblyverweis?)

Hier ist meine Hauptaktivitätsklasse:

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

Das ist mein Fragment Klasse:

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

Was vermisse ich? Danke im Voraus.

+0

Ich erinnere mich, das gleiche Problem zu haben. Einer meiner Klasse wurde nicht automatisch vervollständigt. Mein Projekt hatte Fehler in anderen Dateien. Sobald ich sie gelöst hatte, begann es zu zeigen. Erstellen Sie Ihr Projekt neu, um zu überprüfen, ob Fehler vorhanden sind. – HeisenBerg

Antwort

0

Ich fand eine Arbeit um. Es stellte sich heraus, dass ich neue Zeichenfolgen und Ansichten hatte, die nicht in der Resource Designer-Datei aktualisiert wurden. Ich musste zuerst diese Zeilen mit dem ersten Property in der CSPROJ Datei hinzufügen:

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

Danach habe ich ausgeführt eine saubere und wieder aufzubauen. Dann habe ich die obigen Zeilen entfernt und einen weiteren Build ausgeführt. Das hat es behoben! Danke

Verwandte Themen