Почему происходит сбой моей программы при попытке вызвать методы для моей кнопки? - PullRequest
0 голосов
/ 05 декабря 2011

Итак, я пишу программу для Android. Прямо сейчас я нахожусь в классе GraphicsView, который расширяет View и реализует View.OnClickListener. Я создал кнопку mLeft, которая должна сдвигать объект влево при нажатии. Я пытаюсь заставить это отображаться в левом нижнем углу экрана. В моем конструкторе для GraphicsView у меня есть код:

mLeft = new Button (context.getApplicationContext ());
mLeft.setId (1); // wasn't sure what else to set for an id, I only did that to see if it would fix anything
mLeft.setOnClickListener (this);

И в моем onDraw у меня есть:

mLeft.draw (canvas);

С этим кодом программа работает нормально, и когда я перехожу к занятию, использующему GraphicsView, оно работает совершенно нормально, за исключением лица, которое нигде не отображается.

У меня также есть эта лань в моем конструкторе, прямо под setOnClickListener:

mLeft.setX (0);
mLeft.setY (mDisplay.getHeight () - 64);
mLeft.setHeight (64);
mLeft.setWidth (64);
mLeft.setBackgroundColor (80000000);
mLeft.setText ("<");

Всякий раз, когда у меня есть этот код, и я перехожу к этому действию, программа вылетает. У меня есть onClick там, и кроме «Button mLeft» вверху, это весь код, который я связал с этой кнопкой. По сути, похоже, что программа дает сбой всякий раз, когда я пытаюсь вызвать любой из этих методов из Button. Я пытался комментировать их там, но в коде присутствует только один из них, поэтому я знаю, что каждый из них по отдельности может убить программу.

LogCat говорит: «12-04 15: 11: 03.581: I / dalvikvm (2692): не удалось найти метод android.widget.Button.setX, на который ссылается метод edu.pacificu.cs.Views.GraphicsView.»

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 05 декабря 2011

mLeft = new Button (context.getApplicationContext ());

Не делай этого.Используйте new Button(context) и только в том случае, если context является Activity.Никогда не используйте getApplicationContext(), если вы точно не знаете , почему вы его используете.

LogCat говорит: «12-04 15: 11: 03.581: I / dalvikvm (2692): Не удалось найти метод android.widget.Button.setX, на который ссылается метод edu.pacificu.cs.Views.GraphicsView. "

Как указывает @Selvin, вы, похоже, запускаете это приложение наAndroid 2.x, используя метод (setX()), который не существует в Android 2.x.setX() и setY() в основном для анимационных эффектов (например, слайдов).Положение X / Y / Z вашего View определяется его контейнером (компоновкой) и конфигурацией этого контейнера.

...