0

Surfaceview には既に x 変数と y 変数がありますが、ボタンが配置されているメイン アクティビティからそれらにアクセスする方法がわかりません。

これは百万ドルの質問のように見えます。誰も私に答えてくれません。この質問を何度か投稿しましたが、これに関連するものは何も見つかりません。

ここにボタンがあります:

 Button1.setOnClickListener(this);
    }

    public void onClick(View v) {


//I want to access variable x and y of surfaceview


             if (x==230)
            x=x +20;

        invalidate();

    }

前もって感謝します

4

2 に答える 2

0

インターフェイスを使ってみましたか?x と y の値を取得したら、それらをインターフェイス メソッドに渡すことができます。その後、そのインターフェイスを MainActivity に実装できます。

于 2013-06-29T16:29:22.937 に答える
0

x 変数と y 変数がある場所のサブクラスを作成した場合SurfaceView、ベスト プラクティスは、それらの変数のセッターとゲッターを作成することです (既にそのメソッドがあるため、setPositionX()の代わりに呼び出しています)。setX()SurfaceView

public class MySurfaceView extends SurfaceView {
    private int x;

    private int y;

    public void setPositionX(int x) {
        this.x = x;
    }

    public void setPositionY(int y) {
        this.y = y;
    }

    public int getPositionX() {
        return x;
    }

    public int getPositionY() {
        return y;
    }
}

そしてあなたの活動で:

private MySurfaceView mySurfaceView;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    // Create SurfaceView and assign it to a variable.
    mySurfaceView = new MySurfaceView(this);

    // Do other initialization. Create button listener and other stuff.
    button1.setOnClickListener(this);
}

public void onClick(View v) {
    int x = mySurfaceView.getPositionX();
    int y = mySurfaceView.getPositionY();

    if (x == 230) {
        mySurfaceView.setPositionX(x + 20);
    }

    invalidate();
}
于 2013-06-29T17:04:47.360 に答える