小编Hex*_*gon的帖子

在Release版本中使用assert()时避免使用未使用的变量警告

有时局部变量的唯一目的是在assert()中检查它,就像这样 -

int Result = Func();
assert( Result == 1 );
Run Code Online (Sandbox Code Playgroud)

在Release版本中编译代码时,通常会禁用assert(),因此此代码可能会生成有关Result已设置但从未读取的警告.

可能的解决方法是 -

int Result = Func();
if ( Result == 1 )
{
    assert( 0 );
}
Run Code Online (Sandbox Code Playgroud)

但它需要太多的打字,在眼睛上并不容易,并且导致总是检查条件(是的,编译器可以优化检查,但仍然).

我正在寻找一种替代方法来表达这个assert()的方式不会导致警告,但仍然易于使用并避免更改assert()的语义.

(在此区域代码中使用#pragma禁用警告不是一种选择,并且降低警告级别以使其消失也不是一种选择......).

c++ warnings assertions

55
推荐指数
6
解决办法
2万
查看次数

识别默认的Android Checkbox动画何时结束

单击复选框时,将触发默认的Android材质设计动画(从空白到“ V”标记,从“ V”标记到空白)。

我想确定动画何时结束。

根据文档,这应该可以通过以下两种方式之一实现:

  • 选中或取消选中复选框(setOnCheckedChangeListener())时,获取当前的Animation对象(getAnimation()),并在其上注册一个侦听器(setAnimationListener())。不幸的是,这是行不通的-目前,Animation对象是null

  • 子类化Checkbox对象并实现其onAnimationEnd()方法。不幸的是,这还行不通-永远不会调用该方法。

我想念什么?确定这种默认动画何时结束的好方法是什么?我认为相关事件可以在活动中的其他视图上注册,但是我不知道是哪个。

这是第一种方法的相关代码段(动画始终为null)-

    CheckBox checkBox = (CheckBox)findViewById(R.id.checkbox1);
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            Animation animation = compoundButton.getAnimation();
            Log.d("Checkbox", "Animation is " + animation);
       }
   });
Run Code Online (Sandbox Code Playgroud)

checkbox animation android material-design

5
推荐指数
1
解决办法
503
查看次数