【问题标题】:Android: toggling button (allowing multiple clicks)Android:切换按钮(允许多次点击)
【发布时间】:2012-05-12 08:11:46
【问题描述】:

我有一个“据说”在不同 if 语句之间切换的按钮,但我没有正确理解它。该按钮应该会经历不同的相机闪光灯状态(ON/AUTO/OFF/TORCH),但它只会经历其中一种状态,而不会经历其余状态。按钮是否正确?还是有不同的切换按钮?

   //Flash Button
    final Button flashButton = (Button) findViewById(id.camera_flash);
    flashButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Parameters p = mCamera.getParameters();

            // TODO Auto-generated method stub
            if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_ON){
                p.setFlashMode(Parameters.FLASH_MODE_OFF);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("Off");
                Log.e("Torch","MODE OFF");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_OFF){
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                mCamera.setParameters(p);
                mCamera.release();
                mCamera=null;
                flashButton.setText("TORCH");
                Log.e("Torch","MODE TORCH");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_AUTO){
                p.setFlashMode(Parameters.FLASH_MODE_ON);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("ON");
                Log.e("Torch","MODE ON");

            }else if(p.getFlashMode() == android.hardware.Camera.Parameters.FLASH_MODE_TORCH){
                p.setFlashMode(Parameters.FLASH_MODE_ON);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("AUTO");
                Log.e("Torch","MODE AUTO");

            }else{
                p.setFlashMode(Parameters.FLASH_MODE_AUTO);
                mCamera.setParameters(p);
                mCamera.startPreview();
                flashButton.setText("AUTO");
                Log.e("Torch","MODE AUTO");

            }           
        }

所以基本上,它只会转到FLASH_MODE_AUTO,然后按钮就不再起作用了。我的 if 语句是否正确?提前致谢!

更新:

这在我的 onCreate() 中。不确定这是否有帮助?

【问题讨论】:

  • @AnkitAwasthi 出于某种原因,它没有通过 if 语句捕获。我正在检查日志并查看 p.getFlashMode() 是什么以及 android.hardware.Camera.Parameters.FLASH_MODE_OFF) 是什么,但即使它们彼此相等 ==,它也不会进入那个 if 语句

标签: java android if-statement toggle android-camera


【解决方案1】:

不确定这是否有帮助,但请尝试对所有条件使用“equals(String)”而不是“==”。

【讨论】:

    【解决方案2】:

    您的某些文字出现错误。例如,您测试 FLASH_MODE_AUTO,然后将 setText 设置为“ON”。您测试 FLASH_MODE_TORCH,然后将文本设置为“AUTO”。在继续之前,您可能需要清除它。然后在程序执行时跟踪它。

    【讨论】:

    • 它应该是这样的,因为如果我再次按下按钮,它会检查它是否处于自动状态,如果它已经处于自动状态那么它应该进入不同的状态......跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-21
    • 1970-01-01
    • 2011-09-18
    • 2011-09-11
    相关资源
    最近更新 更多