IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]Android问题集锦之四十一:getActionBar为null的解决以及ActionBar的Back键

    lincyang发表于 2015-05-31 11:12:19
    love 0

    我们用getActionBar获得ActionBar实例,将其隐藏或做其他操作。

    ActionBar actionBar = getActionBar();

    不过我这样做了,但是actionBar是null。

    问题是由Activity基类引起的,当使用AppCompatActivity或其他support包中的基类,那么获得ActionBar实例需要用另一个相应的方法,那就是getSupportActionBar(),ActionBar也要使用相应support包下的。

    android.support.v7.app.ActionBar actionBar = getSupportActionBar();
    

    那么这样就可以ActionBar自带的back功能了。

            if(actionBar != null) {
                actionBar.setDisplayHomeAsUpEnabled(true);
            }
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {       
            int id = item.getItemId();
    
            //noinspection SimplifiableIfStatement
            if(id == R.id.home) {//back key
                Intent intent = NavUtils.getParentActivityIntent(this);
                if(intent != null) {
                    if (NavUtils.shouldUpRecreateTask(this, intent)) {
                        TaskStackBuilder.create(this)
                                .addNextIntentWithParentStack(intent)
                                .startActivities();
                    } else {
                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        NavUtils.navigateUpTo(this, intent);
                    }
                } else {
                    Log.e(TAG,"intent is null");
                }
            }
    
            return super.onOptionsItemSelected(item);
        }
    


沪ICP备19023445号-2号
友情链接