Android:从事件监听器访问Widget

时间:2012-12-23 19:08:08

标签: android events

在我的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的相同实例。

此致 本。

1 个答案:

答案 0 :(得分:1)

或者:

1)

将您的textview声明为类中的字段,如:

private TextView text;

然后就像你现在一样初始化它但没有声明它(你已经在你的课堂上作为一个字段):

text = new TextView(this);

2)

或者只是添加一个final修饰符并在创建侦听器之前执行以下操作:

final TextView text = ...
相关问题