- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
根据我能够从谷歌收集到的信息,如果我希望在长按所述 View 时调用 OnCreateContextMenu,则我必须在 View 上调用 RegisterForContextMenu。这不会发生。
有趣的是,如果我在下面的代码中传入 View 而不是 gameList,如果我长按主视图的空白部分,则会出现上下文菜单。长按列表(这是一个 subview )仍然没有结果。
我还尝试在 ListView 上注册一个 ItemLongClick 事件监听器,这也没有被调用:/
GameList fragment 在 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;
}
}
}
最佳答案
我的问题是我在实际列表项上注册了 ClickHandler,而不是在实际 ListView 上注册了全局 ClickHandler。这会阻止点击事件传播到 ListView ,这就是上下文菜单不会出现的原因。
关于c# - RegisterForContextMenu 似乎没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473803/
根据我能够从谷歌收集到的信息,如果我希望在长按所述 View 时调用 OnCreateContextMenu,则我必须在 View 上调用 RegisterForContextMenu。这不会发生。
我正在尝试使用 float 上下文菜单,我想知道是否可以通过按 ImageView 中的图像来激活此菜单? 我的第一个问题是如何处理 registerForContextMenu 和 ImageVie
这个问题的答案可能很明显,但让我很头疼。我有一个简单的 LinearLayout,其中包含一个 ListView。我这样做:onCreate public void onCreate(Bundle b
我想在用户单击适配器内的 View 时使用上下文菜单。问题是每个 View 的 OnClick 都在一个不是 Activity 的类中 [它是一个扩展 BaseAdapter 的类],在 public
registerForContextMenu 有什么区别: Registers a context menu to be shown for the given view (multiple view
在Activity类中,有一个名为registerForContextMenu(View view)的方法。 android 文档解释说,该方法用于注册一个 上下文菜单 为给定 View 显示(多个
这个问题之前有人问过,主要是引用了ListActivity,所以一直没能使用他们的方案。 OTOH,我正在使用包含 gridview 的正常 Activity (由于其上的其他 UI 元素)。当我对某
我已经尝试寻找解决方案,但没有找到符合我的情况的任何解决方案。我有一个扩展 FragmentActivity 的 MainActivity 和多个 ListFragment。我将 PagerSlidi
在 onCreate 中,我将线性布局 View 附加到变量 activeView。然后调用 registerForContextMenu(activeView)。看起来一切正常,创建了上下文菜单,可
我是一名优秀的程序员,十分优秀!