Null Pointer при попытке вызвать кнопку - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть нулевой указатель на кнопку, которая мне нужна, чтобы при нажатии нажимать на новую раскладку. У меня есть код, установленный как:

((Button) findViewById(R.id.analyzee)).setOnClickListener(btnClick);

внутри метода, который использует условные операторы.

Это базовое приложение для определения лица. Если лица не найдены, я делаю это:

if (facesFound < 1) {
                mFlipper.setDisplayedChild(2);
                mTheMessage = (TextView) findViewById(R.id.falsemessage);
                mThePicture = (ImageView) findViewById(R.id.false_view);
                mTheMessage.setText(R.string.noFaceOne);
                mThePicture.setImageBitmap(bitmap565);
                return; 

если лица найдены, я рисую на нем рамку и делаю это:

mFlipper.setDisplayedChild(1);
            mTheMessage.setText(R.string.noFaceFive);
            mThePicture.setImageBitmap(bitmap565);

Моя проблема заключается в том, что я использую этот метод для запуска, когда кнопки синхронизированы:

private final View.OnClickListener btnClick = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
            case R.id.scan_box:
                openCamera();
                break;

            case R.id.crop_face:
                final ProgressDialog dialog = ProgressDialog.show(Main.this, "",
                        "Cropping photo", true);
                dialog.show();

                Handler handler = new Handler();
                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        dialog.dismiss();
                    }
                }, 3000);

                cropFace();
                break;

Итак, моя проблема заключается в следующем:

В одном из моих макетов во флиппере кнопка, которая покоится на макете, должна дать пользователю возможность сделать новый снимок, если лица не найдены. Для другого макета потребуется кнопка (после щелчка), чтобы обрезать грани и отправить результаты в другой макет.

Проблема, с которой я сталкиваюсь, - это где код:

((Button) findViewById(R.id.crop_face)).setOnClickListener(btnClick);

должен быть помещен для того, чтобы программа отпустила нажатие кнопки, она вызывает регистр в моем операторе switch и запускает обрезку face_method.

Я пытаюсь поместить его в оператор if, где я устанавливаю изображение и текстовое представление, но на этой строке я получаю нулевой указатель, на котором я объявляю кнопку.

Кнопки, которые есть в моем главном меню, работают нормально, так как они есть в моем методе onCreate, но я не знаю, где воспроизвести эту кнопку, а также где мне нужно разместить свою команду «Открыть камеру».

Спасибо!

1 Ответ

0 голосов
/ 22 ноября 2010

Я просто использовал неправильный идентификатор кнопки ... извините за путаницу = x

...