我有一个函数,我将View
作为参数传递给我。现在,当我在函数statusView
中使用onAnimationEnd
时,编译器会给出一条消息,将statusView
的修饰符更改为final
。所以我不明白为什么这是必要的?
private void showProgress(Context c, View statusView) {
statusView.setVisibility(View.VISIBLE);
statusView.animate().setDuration(shortAnimTime)
.alpha(show ? 1 : 0)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
statusView.setVisibility(show ? View.VISIBLE
: View.GONE);
}
});
}
答案 0 :(得分:0)
由于变量statusView在AnimatorListenerAdapter
创建的对象之外,因此必须在编译时知道它,因此,它被声明为final。但是,您可以通过在参数列表中声明最终(在第1行)来解决它。