Android dev - проблема с использованием SeekBar - PullRequest
2 голосов
/ 20 сентября 2011

Я пытаюсь реализовать SeekBar в простом приложении-фонарике (которое я изучаю) и не могу понять, почему приложение продолжает падать, когда я устанавливаю OnSeekBarChangeListener в свой SeekBar. Как только удаляется весь код внутри onStopTrackingTouch () для слушателя, приложение работает нормально. Но если в методах слушателя что-то есть, то происходит сбой. Я также использую кнопки и жесты в приложении, и у меня не было проблем с их использованием.

Я поднимаю отдельную раскладку, когда пользователь нажимает кнопку Меню | Опция яркости, которая отображает SeekBar (для регулировки яркости)

Вот как я реализую SeekBar:

SeekBar mSeekBar;

...

@Override 
public void onCreate(Bundle savedInstanceState){
setContentView(R.layout.main);

...

mSeekBar = (SeekBar)findViewById(R.id.mSeekbar);
        mSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                //first set the brightness mode to manual
                Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

                //change the actual setting
                WindowManager.LayoutParams lp = getWindow().getAttributes();
                float brightness = Float.valueOf(seekBar.getProgress()); //change the brightness here
                lp.screenBrightness = brightness;
                getWindow().setAttributes(lp); //set the new brightness
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
                // TODO Auto-generated method stub

            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromUser) {
                // TODO Auto-generated method stub
            }
        });

Спасибо за ваше время и советы.

ОБНОВЛЕНИЕ: Вот ссылка на мою информацию Logcat http://pastie.org/2561098

ОБНОВЛЕНИЕ 2: Вот ссылка на мою версию журнала LogCat: http://pastie.org/2561111

РЕШИТЬ:

У меня был экземпляр mSeekBar и набор слушателей до того, как появился макет. SeekBar был нулевым, потому что отдельная раскладка, которую я сделал для регулировки яркости, в данный момент не видна. Помещение экземпляра и слушателя в оператор switch, который я использую для меню опций, после установки нового макета (для яркости) работает отлично.

Спасибо!

1 Ответ

1 голос
/ 20 сентября 2011

Вот ваш ответ.В строке 77 вашего метода onCreate происходит сбой вашей программы из-за исключения NullPointerException.Ответ в трассировке стека, хотя они выглядят озадачивающими, они фактически указывают на точную строку кода, которая вызвала сбой (большую часть времени).

at com.polaniec.myflashlight.MyFlashLightActivity.onCreate(MyFlashLightActivity.java:77)

Когда вы копаете трассировку стека, вы хотите найти часть, которая указывает ВАШЕ реальное имя класса и имя метода (не все из android.os ... или java.lang ...методы).77 означает, что это строка 77 в вашем коде.Все, на что вы ссылаетесь, является нулевым, может быть, оно не было создано?

Надеюсь, это поможет!

...