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)

次のように、テキストビューをクラスのフィールドとして宣言します。

private TextView text;

そして、今と同じように初期化しますが、宣言はしません(クラスでフィールドとしてすでに実行しました)。

text = new TextView(this);

2)

または、最後の修飾子を追加して、リスナーを作成する前にこれを数行実行します。

final TextView text = ...
于 2012-12-23T19:15:57.037 に答える