我試圖實現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