资讯专栏INFORMATION COLUMN

Fragment中监听onKey事件

Berwin / 3009人阅读

摘要:本文分享开发中监听事件主要代码,供技术员参考学习。项目中越来越多的用到,下面记录一下在中监听的事件。实现事件,判断当前的是哪一个,是不是所需要的然后在需要监听事件的中写一个静态方法,传递与事件即可。

wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享android开发Fragment中监听onKey事件主要代码,供技术员参考学习。
项目中越来越多的用到Fragment,下面记录一下在ActionBar中监听Fragment的onKey事件。
  ActionBar实现Onkey事件,判断当前的fragment是哪一个,是不是所需要的Fragment,然后在需要监听OnKey事件的Fragment中写一个静态方法,传递keycode与event事件即可。

package info.androidhive.tabsswipe;
    import info.androidhive.tabsswipe.adapter.TabsPagerAdapter;
    import android.annotation.SuppressLint;
    import android.app.SearchManager;
    import android.content.Context;
    import android.support.v7.app.ActionBar;
    import android.support.v7.app.ActionBar.Tab;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.widget.SearchView;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.view.MenuItemCompat;
    import android.support.v4.view.ViewPager;
    import android.util.Log;
    import android.view.KeyEvent;
    import android.view.Menu;
    import android.view.MenuItem;
    
    @SuppressLint("NewApi")
    public class MainActivity extends ActionBarActivity  implements
            ActionBar.TabListener {
    
        private ViewPager viewPager;
        private TabsPagerAdapter mAdapter;
        private ActionBar actionBar;
        private Fragment fg;
        // Tab titles
        private String[] tabs = { "TopRatedFragment", "GamesFragment", "MoviesFragment" };
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Initilization
            viewPager = (ViewPager) findViewById(R.id.pager);
            actionBar = getSupportActionBar();
            mAdapter = new TabsPagerAdapter(getSupportFragmentManager());
            viewPager.setOffscreenPageLimit(3);
            viewPager.setAdapter(mAdapter);
            actionBar.setHomeButtonEnabled(false);
            actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);        
    
            // Adding Tabs
            for (String tab_name : tabs) {
                actionBar.addTab(actionBar.newTab().setText(tab_name)
                        .setTabListener(this));
            }
    
            /**
             * on swiping the viewpager make respective tab selected
             * */
            viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    
                public void onPageSelected(int position) {
                    // on changing the page
                    // make respected tab selected
    //                actionBar.setSelectedNavigationItem(position);
                    actionBar.selectTab(actionBar.getTabAt(position));
                    mAdapter.getItem(position);
                    
                }
    
                public void onPageScrolled(int arg0, float arg1, int arg2) {
                }
    
                public void onPageScrollStateChanged(int arg0) {
                }
            });
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
    //        
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            getMenuInflater().inflate(R.menu.main, menu);
            MenuItem searchItem = menu.findItem(R.id.action_settings);
            SearchView searchview = (SearchView)MenuItemCompat.getActionView(searchItem);
            searchview.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
            return super.onCreateOptionsMenu(menu);
        }
        
        
        public void onTabReselected(Tab arg0,
                android.support.v4.app.FragmentTransaction arg1) {
            // TODO Auto-generated method stub
            
        }
    
        public void onTabSelected(Tab arg0,
                android.support.v4.app.FragmentTransaction arg1) {
            // TODO Auto-generated method stub
            viewPager.setCurrentItem(arg0.getPosition());
            fg = mAdapter.getItem(arg0.getPosition());
            Log.d("fg", fg+"");
        }
    
        public void onTabUnselected(Tab arg0,
                android.support.v4.app.FragmentTransaction arg1) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            // TODO Auto-generated method stub
            Log.d("ActionBar", "OnKey事件");
            if(fg instanceof GamesFragment){
                GamesFragment.onKeyDown(keyCode, event);
            }
            return super.onKeyDown(keyCode, event);
        }
    }

原文详情地址:http://git.oschina.net/einsqi...
wemall-mobile商城详情地址:http://www.koahub.com/home/pr...
wemall官网地址:http://www.wemallshop.com
WeMall - 开源微商城 微信商城 商城源码 分销商城 b2b2c商城系统

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22089.html

相关文章

  • Fragment监听onKey事件

    摘要:本文分享开发中监听事件主要代码,供技术员参考学习。项目中越来越多的用到,下面记录一下在中监听的事件。实现事件,判断当前的是哪一个,是不是所需要的然后在需要监听事件的中写一个静态方法,传递与事件即可。 wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改。本文分享android开发Fragment...

    cpupro 评论0 收藏0
  • Python的门面担当 - Tkinter

    摘要:在这个窗口之上,可以添加各种输入框按钮文本等,可以增加对各种动作的处理。事件要与特定的控件相绑定,比如按钮有点击事件,输入框有按键事件,窗体有关闭事件等。 在大多数时候,我们都在黑黢黢的控制台里执行 Python 脚本。这看起来很酷很 GEEK。但对于部分场景下的用户来说,这样就不大美观和人性化了:我们需要交互更方便的图形化产品,也就是 GUI (图形用户界面,Graphical Us...

    Lucky_Boy 评论0 收藏0
  • 撸个简单的MVVM框架

    摘要:所以无需太过介怀是实现的单向或双向绑定。响应事件浏览器变更事件事件执行或数据劫持则是采用数据劫持结合发布者订阅者模式的方式,通过来劫持各个属性的,,在数据变动时发布消息给订阅者,触发相应的监听回调。 剖析Vue实现原理 - 如何实现双向绑定mvvm showImg(https://segmentfault.com/img/bVbexsm?w=1446&h=820); 本文能帮你做什么?...

    imingyu 评论0 收藏0
  • 剖析Vue实现原理 - 如何实现双向绑定mvvm(转载)

    摘要:接下来要看看这个订阅者的具体实现了实现订阅者作为和之间通信的桥梁,主要做的事情是在自身实例化时往属性订阅器里面添加自己自身必须有一个方法待属性变动通知时,能调用自身的方法,并触发中绑定的回调,则功成身退。 本文能帮你做什么?1、了解vue的双向数据绑定原理以及核心代码模块2、缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自vue源码, 并进行了简化改造,...

    nemo 评论0 收藏0
  • 剖析Vue实现原理 - 如何实现双向绑定mvvm(转载)

    摘要:接下来要看看这个订阅者的具体实现了实现订阅者作为和之间通信的桥梁,主要做的事情是在自身实例化时往属性订阅器里面添加自己自身必须有一个方法待属性变动通知时,能调用自身的方法,并触发中绑定的回调,则功成身退。 本文能帮你做什么?1、了解vue的双向数据绑定原理以及核心代码模块2、缓解好奇心的同时了解如何实现双向绑定为了便于说明原理与实现,本文相关代码主要摘自vue源码, 并进行了简化改造,...

    DataPipeline 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<