Fragment支持创建长按menu——FragmentContextMenuSupport

来源:互联网 发布:ubuntu gnome16.04美化 编辑:程序博客网 时间:2024/06/18 11:54
/** * Demonstration of displaying a context menu from a fragment. * 该例子展示了从fragment中展示一个上下文菜单 */public class FragmentContextMenuSupport extends FragmentActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // Create the list fragment and add it as our sole content.        //将fragment直接加入到decoreview的content中        ContextMenuFragment content = new ContextMenuFragment();        getSupportFragmentManager().beginTransaction().add(                android.R.id.content, content).commit();    }    public static class ContextMenuFragment extends Fragment {        @Override        public View onCreateView(LayoutInflater inflater, ViewGroup container,                                 Bundle savedInstanceState) {            View root = inflater.inflate(R.layout.fragment_context_menu, container, false);            //该方法将上下文菜单设置给了root中的longpress按钮            //该方法的功能就是当长按longpress按钮时,弹出上下文菜单,菜单到底显示什么在下面的两个方法中设置            registerForContextMenu(root.findViewById(R.id.long_press));            // 指向源码://            public void registerForContextMenu(View view) {//                view.setOnCreateContextMenuListener(this);                  //指向:    //            public void setOnCreateContextMenuListener(OnCreateContextMenuListener l) {    //                if (!isLongClickable()) {    //                    setLongClickable(true);  //可以看到设置了长按事件    //                }    //                getListenerInfo().mOnCreateContextMenuListener = l;    //            }//            }            return root;        }        //添加菜单条目的方法        @Override        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {            super.onCreateContextMenu(menu, v, menuInfo);            menu.add(Menu.NONE, R.id.a_item, Menu.NONE, "Menu A");            menu.add(Menu.NONE, R.id.b_item, Menu.NONE, "Menu B");        }        //菜单条目选择事件        @Override        public boolean onContextItemSelected(MenuItem item) {            switch (item.getItemId()) {                case R.id.a_item:                    Log.i("ContextMenu", "Item 1a was chosen");                    return true;                case R.id.b_item:                    Log.i("ContextMenu", "Item 1b was chosen");                    return true;            }            return super.onContextItemSelected(item);        }    }}

图片:


0 0
原创粉丝点击