java - Android 开发者 - 使用 SeekBar 的问题

标签 java android seekbar

我正在尝试在一个简单的手电筒应用程序(我正在学习)中实现一个 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 为空,因为我为调整亮度所做的单独布局当前不在 View 中。在设置新布局(用于亮度)后,将实例化和监听器放在我用于选项菜单的 switch 语句中效果很好。

谢谢!

最佳答案

这就是你的答案。在 onCreate 方法的第 77 行,您的程序因 NullPointerException 而崩溃。答案在堆栈跟踪中,虽然这些看起来令人费解,但它们实际上将您指向导致崩溃的确切代码行(大多数情况下)。

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

当您深入研究堆栈跟踪时,您想要查找指示您的实际类名和方法名的部分(不是所有的 android.os... 或 java.lang... 方法)。 77 表示它是代码中的第 77 行。无论您引用什么都是空的,也许它没有被实例化?

希望这对您有所帮助!

关于java - Android 开发者 - 使用 SeekBar 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7479510/

相关文章:

Java使用通配符正则表达式匹配字符串来查找<H1>标签

java - ANDROID:权限请求代码未出现

android - 如何使用android seekbar显示时间选择?

android - 在 Android 中实现 SeekBar Listener 接口(interface)时出现空指针异常

Android seekbar使用九贴图设置自定义样式

java - 如何将 DecimalFormat 中的小数点分隔符设置为空

java - 应用程序启动时在 jDateChooser 处获取空指针异常

java - 在哪里可以找到对NPAPI应用程序的现代支持?

android - 具有 2 列和自动调整大小的图像的 RecyclerView

java - MQTT Android Studio 和 Raspberry PI 代理