在我的Android应用程序中,我有一个ImageView(在onCreate方法中),附带一个onTouch监听器,如下所示:
ball.setClickable(true);
ball.setOnTouchListener(ballDragListener);
和事件监听器:
View.OnTouchListener ballDragListener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
RelativeLayout layout = (RelativeLayout)findViewById(R.id.pet_layout); // Reference to the already created layout
int velocityX = 1;
int velocityY = 1;
int eventAction = event.getAction();
int newX = (int)(event.getRawX());
int newY = (int)(event.getRawY());
v.setX(newX + velocityX);
v.setY(newY + velocityY);
//v.invalidate();
return true;
}
假设我在onCreate方法中声明了一个新的TextView:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
我如何从事件监听器访问它?调用'text.setText()'不起作用,因为它找不到对象。
编辑:我还希望能够从我的onCreate()方法和/或其他方法访问TextView的相同实例。
此致 本。
答案 0 :(得分:1)
或者:
1)
将您的textview声明为类中的字段,如:
private TextView text;
然后就像你现在一样初始化它但没有声明它(你已经在你的课堂上作为一个字段):
text = new TextView(this);
2)
或者只是添加一个final修饰符并在创建侦听器之前执行以下操作:
final TextView text = ...