Button 如何访问从主活动到surfaceview Android的变量?

Button 如何访问从主活动到surfaceview Android的变量?,button,android-canvas,surfaceview,onclicklistener,translate-animation,Button,Android Canvas,Surfaceview,Onclicklistener,Translate Animation,我在主活动中有两个按钮,它们是在没有xml的情况下通过编程实现的。 按钮应该移动surfaceview上的位图,我如何才能做到这一点 here is one of the Buttons: Button1.setOnClickListener(this); } public void onClick(View v) { //I want to access variable x and y of surfaceview if (x==

我在主活动中有两个按钮,它们是在没有xml的情况下通过编程实现的。 按钮应该移动surfaceview上的位图,我如何才能做到这一点

here is one of the Buttons:

    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();

    }

如果希望将值传递回原始活动,则应使用startActivityForResult


然后,您可以在onActivityResult回调中访问它们

如果您已经创建了
SurfaceView
的子类,其中包含x和y变量,那么最好的做法是为这些变量创建setter和getter(我称之为
setPositionX()
而不是
setX())
,因为
SurfaceView
已经有了该方法):

在你的活动中:

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();
}

请举一些例子
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();
}