簡體   English   中英

C#-Main Activity無法識別Xamarin Fragment類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM