为Toolbar左上角的返回箭头设置点击监听事件

使用Toolbar一定要保证你当前操作的Activity继承自ActionBarActivity,然后在代码中设置支持

Toolbar,并且设置home键为可用状态


 Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setHomeButtonEnabled(true);


之后还要重写onOptionsItemSelected(MenuItem item)方法 。在Toolbar上的左上角的返回箭头的键值为Android.R.id.home,切记为Android.R.id.home,而不是R.id.home,否则可能监听不到左上角监听的点击事件

代码如下

 @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==android.R.id.home){
            if(flag){
                new SweetAlertDialog(this,SweetAlertDialog.ERROR_TYPE)
                        .setTitleText("请认真学习!!!")
                        .setContentText("学习计划还未完成,请放下手机!!")
                        .show();

            }else {
                if(vibrator!=null){
                    vibrator.cancel();
                }
                finish();

            }
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

顺便提一下,在activity中监听系统实体按键的返回是重写onKeyDown(int keyCode, KeyEvent event)方法,返回按键的监听如下

 @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if(keyCode==KeyEvent.KEYCODE_BACK){

            //未完成学习计划的逻辑
            if(flag){
                new SweetAlertDialog(this,SweetAlertDialog.ERROR_TYPE)
                        .setTitleText("请认真学习!!!")
                        .setContentText("学习计划还未完成,请放下手机!!")
                        .show();

            }else {
                finish();
                if(vibrator!=null){
                    vibrator.cancel();
                }
            }

            return true;
        }

        return super.onKeyDown(keyCode, event);
    }



展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值