boolean buttonflag=false;
Editbutton.setOnClickListener( new OnClickListener()
{
@Override
public void onClick( View v )
{
buttonflag=true;
}
}
错误我得到的是“不能引用在不同方法中定义的内部类中的非最终变量buttonflag”我想要做的是当我按下编辑按钮时我想要按钮标志是真的..可以任何一个解释原因并解决这个问题?
答案 0 :(得分:3)
错误信息非常简单。由于buttonflag
不是最终版,因此您无法在OnClickListener
匿名类中访问它。两种可能的解决方案
让它成为最终的。但是,你无法修改它,你必须选择导致
的一维数组方法final boolean[] buttonflag=new boolean[]{false};
Editbutton.setOnClickListener( new OnClickListener(){
@Override
public void onClick( View v ){
buttonflag[0]=true;
}
}
答案 1 :(得分:1)
对于这种情况,您必须将其设为字段。另一个@Robin正确地向您展示了两种解决问题的方法,但是因为这是一个多次调用的回调机制(毕竟它是一个按钮上的回调),所以局部变量很少用,因为它会在调用方法之前可能超出范围。
即使它不会失败,因为设置的值不再可由代码的任何其他部分访问,因此它没有用处。我假设您在按下按钮时尝试设置一些状态,因此当包含所显示代码的方法结束时,该状态需要存储为可访问的字段。