0

在我的 Android 应用程序中,我有一个带有 onTouch 侦听器的 ImageView(在 onCreate 方法中),如下所示:

    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 实例。

问候,本。

4

1 回答 1

1

任何一个:

1)

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

private TextView text;

然后像现在一样初始化它,但不声明它(你已经在你的类中作为一个字段做了):

text = new TextView(this);

2)

或者只是添加一个 final 修饰符并在创建监听器之前执行几行:

final TextView text = ...
于 2012-12-23T19:15:57.037 回答