我试图实现James Montemagno的导航抽屉(https://github.com/jamesmontemagno/Xamarin-Templates),我遇到了问题。当我创建一个新项目时,我没有遇到任何问题,但是当我尝试将支持库添加到现有项目时,出现以下错误:Xamarin.Android支持库
类型或名称空间名称“Support”不存在于命名空间'我的命名空间'中(你是否缺少程序集引用)?
这里是我的代码(该问题的代码是最后一行我还没有过去,这是因为我想知道发生了什么。):
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.Views;
using Android.Widget;
using Android.Support.V7.App;
using Android.Support.V4.Widget;
using Android.Support.V4.View;
using MyApp.Parse;
using MyApp.Android.Core.Login;
using MyApp.Android.Core.Utils;
namespace MyApp.Android.Core.Main
{
[Activity(Label = "MainActivity", Icon = "@drawable/Icon")]
public class MainActivity : BaseActivity
{
private MyActionBarDrawerToggle mDrawerToggle;
private string mDrawerTitle;
private string mTitle;
private DrawerLayout mDrawerLayout;
private ListView mDrawerListView;
private DrawerMenuAdapter mAdapter;
protected override int LayoutResource
{
get
{
return Resource.Layout.Main;
}
}
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// setup drawer
mTitle = mDrawerTitle = Title;
mDrawerLayout = FindViewById<DrawerLayout>(Resource.Id.drawer_layout);
mDrawerListView = FindViewById<ListView>(Resource.Id.left_drawer);
// create adapter for drawer
mDrawerListView.Adapter = mAdapter = new DrawerMenuAdapter(this);
// set click handler
mDrawerListView.ItemClick += (sender, args) => ListItemClicked(args.Position);
// set DrawerShadow
mDrawerLayout.SetDrawerShadow(Resource.Drawable.drawer_shadow_dark, (int)GravityCompat.Start);
// set DrawerToggle - the animation that happens with the indicator next to the actionbar
mDrawerToggle = new MyActionBarDrawerToggle(this, mDrawerLayout, Toolbar,
Resource.String.drawer_open,
Resource.String.drawer_close);
// display current fragment's title and update the options menu
mDrawerToggle.DrawerClosed += (o, args) =>
{
this.SupportActionBar.Title = mTitle;
this.SupportInvalidateOptionsMenu();
};
// display the drawer title and update the options menu
mDrawerToggle.DrawerOpened += (o, args) =>
{
this.SupportActionBar.Title = mDrawerTitle;
this.SupportInvalidateOptionsMenu();
};
// set the drawer listener
mDrawerLayout.SetDrawerListener(mDrawerToggle);
// if first time, click first item
if (savedInstanceState == null)
ListItemClicked(0);
//
Button logout = FindViewById<Button>(Resource.Id.logoutButton);
logout.Click += (object sender, EventArgs e) =>
{
Toast.MakeText(this, APIHandler.Logout(), ToastLength.Long).Show();
StartActivity(typeof(DispatchActivity));
};
}
int oldPosition = -1;
private void ListItemClicked(int position)
{
// this way we don't load twice
if (position == oldPosition)
return;
oldPosition = position;
Android.Support.V4.App.Fragment fragment = null;
}
}
}
我使用Visual Studio和我试过在我的项目中使用参考和组件导入Xamarin.Android.Support.v4和Xamarin.Android.Support.v7.AppCompat。当我在课程开始时使用''时,我可以找到Android.Support,但是一旦我进入课程声明后,我无法找到Android.Support。
有谁知道如何解决这个问题?我是C#,Xamarin和Visual Studio的新手,所以我有点不知所措。
我知道我可以通过刚开始一个新项目并复制大部分旧代码来解决此问题,但我想知道为什么我会收到此错误。
你想从支持库中使用什么特定的控件?对于导航抽屉,您应该使用Android.Support.V4.Widget.DrawerLayout以及可选的新支持设计库和Android.Support.Design.Widget.NavigationView(用于抽屉内部的内容) – codechinchilla
这正是我所知道的试图去做。但这意味着我需要使用Android.Support.V4.App.Fragment,这是我遇到的问题。这几乎就像我的'使用Android.Suport.V4.Widget'和Android.Support.V4.App.Fragment(在类中)正在碰到不同的Android实例。我的项目名为ProjectName.Android是否重要? – Matt
嗯,你的项目命名为ProjectName.Android应该没关系 - 如果你在你的代码中使用完全限定名称(即Android.Support.V4.Widget.DrawerLayout)会发生什么?你也可以在问题类中粘贴吗? – codechinchilla