如何创建没有final参数的函数,包括Runnable()?
public void scroll(int scroll_to) {
final HorizontalScrollView scrl = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1);
scrl.post(new Runnable() {
public void run() {
scrl.scrollTo(0, scroll_to);
}
});
}
但这不能引用非最终scroll_to
变量。如何做滚动的通用功能?没有Runnable
,它并不总是有效。
答案 0 :(得分:5)
这个怎么样?
public void scroll(int scroll_to)
{
final int x = scroll_to;
final HorizontalScrollView scrl = (HorizontalScrollView)findViewById(R.id.horizontalScrollView1);
scrl.post(new Runnable()
{
public void run()
{
scrl.scrollTo(0, x);
}
});
}
答案 1 :(得分:1)
您可以在构建期间将scrl
的值传递给runnable,而不是从runnable中引用它。
protected class MyRunnable implements Runnable {
protected HorizontalScrollView scrl;
public SetStatusIconRunnable( HorizontalScrollView scrl, int scrollTo ) {
mScrl = val;
mScrollTo = scrollTo;
}
@Override
public void run() {
mScrl.scrollTo(0, mScrollTo);
}
}
答案 2 :(得分:1)
您可以scroll_to
进行最终决定。它也适用于方法参数。