[英]C# - Xamarin Fragment class is not being recognized by Main Activity
我試圖給家庭片段類充氣,但出現此錯誤:
找不到類型或名稱空間名稱“ 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);
}
}
}
我想念什么? 提前致謝。
我找到了解決方法。 事實證明,我有新的字符串和視圖,但沒有更新到Resource Designer文件中。 我必須首先將這些行添加到.csproj文件中的第一個PropertyGroup中:
<MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
<AndroidResgenClass>Resource</AndroidResgenClass>
之后,我進行了清理和重建。 然后,我刪除了上面的行並運行了另一個構建。 修好了! 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.