ссылки на целые из других классов - PullRequest
1 голос
/ 14 июня 2010

Если бы я хотел сослаться на int из другого класса, как бы я это сделал?

public class Zoom extends View {
    private Drawable image;
    public int zoomControler = 20;

    public Zoom(Context context) {
        super(context);
        image=context.getResources().getDrawable(R.drawable.icon);
        setFocusable(true);      
    }

    @Override            
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        image.setBounds((getWidth ()/2)-zoomControler,
                        (getHeight()/2)-zoomControler,
                        (getWidth ()/2)+zoomControler,
                        (getHeight()/2)+zoomControler);
        image.draw(canvas);
    }
}

class HelloOnTouchListener implements OnTouchListener{
    @Override
    public boolean onTouch(View arg0, MotionEvent arg1) {
        return true;
    }
}

В этом случае я хочу сослаться на zoomControler из первого класса во втором HelloOnTouchListener классе.

Ответы [ 2 ]

6 голосов
/ 14 июня 2010

Вам нужно создать геттер в первом классе что-то вроде.

public int getZoomController()
{
    return zoomController;
}

И в вашем слушателе это будет.

((Zoom) arg0).getZoomController();
1 голос
/ 14 июня 2010

Хотя ответ @ jsmith является рекомендуемым подходом, тот факт, что атрибут zoomControler (sic) является открытым, означает, что вы также можете сделать это:

int z = ((Zoom) arg0).zoomControler;

или даже

((Zoom) arg0).zoomControler = z;

Однако доступ к таким атрибутам - это плохой стиль, и даже показ атрибутов - плохой стиль. Вам, вероятно, следует изменить zoomControler на private, чтобы другие классы имели доступ к нему через методы получения и установки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...