Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android开发人员-使用SeekBar的问题_Java_Android_Seekbar - Fatal编程技术网

Java Android开发人员-使用SeekBar的问题

Java Android开发人员-使用SeekBar的问题,java,android,seekbar,Java,Android,Seekbar,我正试图在一个简单的手电筒应用程序(我正在学习)中实现一个SeekBar,但我无法理解为什么当我将onseekbarchaneglistener设置为我的SeekBar时,应用程序一直崩溃。只要删除侦听器onStopTrackingTouch()中的所有代码,应用程序就会正常运行。但是,如果侦听器的方法中有任何内容,它就会崩溃。我还在应用程序中使用按钮和手势,在使用这些按钮和手势时没有任何问题 当用户按下菜单按钮|亮度选项时,我打开了一个单独的布局,该选项显示SeekBar(调整亮度) 下面是我

我正试图在一个简单的手电筒应用程序(我正在学习)中实现一个SeekBar,但我无法理解为什么当我将onseekbarchaneglistener设置为我的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信息的链接

更新2:以下是我的发布运行日志信息的链接:

已解决:

在布局出现之前,我已经实例化了mSeekBar并设置了侦听器。SeekBar为空,因为我为调整亮度而做的单独布局当前不在视图中。在设置了新布局(亮度)之后,将实例化和侦听器放在我用于选项菜单的switch语句中,效果非常好


谢谢大家!

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

当您在堆栈跟踪中挖掘时,您希望查找指示实际类名和方法名的部分(不是所有的android.os…或java.lang…方法)。77表示代码中的第77行。无论您引用什么都是空的,可能它没有实例化


希望这有帮助

错误是什么?如果它崩溃,它必须给出异常。如果我试图在模拟器或设备上使用调试模式,eclipse会抛出这个可怕的错误,说“找不到源”,然后它会给我一个选项来编辑源的路径(即使它指向了正确的位置)。在emulator中,没有给出消息,只是强制关闭了应用程序。我在win 7 64位pc上使用Galileo。由于我也没有链接到完整的Android源,所以我得到了未找到的源代码错误。您必须按f6继续单步执行,或按f8运行到下一个断点。另外-打开LogCat视图,它会显示Android系统中发生的一切-包括导致强制关闭的错误。窗口>ShowView>其他>搜索logcat是否可以打印与其相关的logcat?logcat位于链接上方(先调试,然后发布运行)@杰克,即使我尝试一步一步地浏览应用程序,我也会得到源代码未找到的错误。谢谢!第77行是我设置mSeekBar.setonseekbarchaneglistener的那一行。具体地说,上面的这一行是:mSeekBar.setOnSeekBarAngerListener(new SeekBar.OnSeekBarAngerListener(){您确定mSeekBar不是空的吗?可能它在XML中有不同的名称?记住它区分大小写(因此mSeekBar与mSeekBar不同)。此外,由于您可以删除onStopTrackingTouch中的代码,并且它工作正常,这可能意味着它在该方法中存在。继续逐行执行,直到找到该方法。然后执行并通过该方法(逐行执行-f6),它将在问题行崩溃。
at com.polaniec.myflashlight.MyFlashLightActivity.onCreate(MyFlashLightActivity.java:77)