从我已经能够从谷歌收集,调用RegisterForContextMenu的一个视图应该是我必须做的,如果我想要调用OnCreateContextMenu时,我长时间点击所述视图。这不会发生。RegisterForContextMenu似乎没有效果
有趣的是,如果我在下面的代码中传入视图而不是gameList,如果我长时间点击主视图的空白部分,则会出现上下文菜单。长按列表(这是一个子视图)仍然没有结果。
我也尝试注册的一个的ListView事件ItemLongClick监听器,这个不会被调用之一:/
的游戏列表片段是viewpager内运行。
using Android.Views;
using Android.OS;
using Android.Runtime;
using Android.Widget;
using Android.Support.V4.App;
using Models = Boardwar.Common.Models;
using Boardwar.AndroidClient.Adapters;
namespace Boardwar.AndroidClient.Fragments {
public class GameList : Fragment {
GamesAdapter GamesAdapter;
public GameList() {
}
public GameList (IntPtr handle, JniHandleOwnership jni) : base(handle, jni) {
}
public override View OnCreateView (LayoutInflater inflater, ViewGroup parent, Bundle bundle) {
return inflater.Inflate(Resource.Layout.GameList, parent, false);
}
public override void OnActivityCreated (Bundle p0) {
base.OnActivityCreated(p0);
var mainActivity = Activity as MainActivity;
var gameList = View.FindViewById<ListView>(Resource.Id.game_list);
GamesAdapter = new GamesAdapter(mainActivity);
gameList.Adapter = GamesAdapter;
mainActivity.GamesAdapter = GamesAdapter;
RegisterForContextMenu(gameList);
View.FindViewById(Resource.Id.new_game_button).Click += (sender, e) => {
mainActivity.ReplaceChildFragments(typeof(NewGame));
};
}
public override void OnCreateContextMenu (IContextMenu menu, View view, IContextMenuContextMenuInfo menuInfo) {
base.OnCreateContextMenu(menu, view, menuInfo);
menu.Add(Resource.String.remove_finished_games);
}
public override bool OnContextItemSelected (IMenuItem item) {
MainActivity.Client.RemoveFinishedGames();
return true;
}
public override void OnResume() {
base.OnResume();
GamesAdapter.UpdateList();
}
public override void OnDestroyView() {
base.OnDestroyView();
(Activity as MainActivity).GamesAdapter = null;
}
}
}
当你扔掉Xamarin或你正在使用的任何东西并在传统设置中尝试你的代码时会发生什么?我可以告诉你,registerForContextMenu(list)的工作方式,你期望它与常规设置。请记住,我不希望你停止使用C#,但为了一个测试的目的,这样做至少可以帮助你识别罪魁祸首。 – MarsAtomic 2013-05-10 02:17:54