Android:参数不通过if-else语句?

时间:2012-05-12 19:18:30

标签: java android if-statement parameters parameter-passing

我正在使用LogCat来显示我的值,但它不能通过我的if语句工作?

    Parameters p = mCamera.getParameters();
    p.setFlashMode(Parameters.FLASH_MODE_OFF);
    mCamera.setParameters(p);
    mCamera.startPreview();
    Log.d("Torch","MODE AUTO: " + p.getFlashMode() + "," + Parameters.FLASH_MODE_AUTO);

    //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();
            Log.d("Torch","MODE : " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_OFF);

            // TODO Auto-generated method stub
            if(p.getFlashMode() == 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() == Parameters.FLASH_MODE_OFF){
                p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                mCamera.setParameters(p);
                mCamera.startPreview();
                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.d("Torch","MODE ON: " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_AUTO);

            }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.d("Torch","MODE AUTO: " + p.getFlashMode() + "," + android.hardware.Camera.Parameters.FLASH_MODE_AUTO);

            }   */      
        }

我得到MODE AUTO: off,auto(在我的onCreate中)和MODE: off,off(在onClick中)。这些是我的测试,所以理论上,如果我的onCreate是off,auto,那么它应该通过if(p.getFlashMode() == Parameters.FLASH_MODE_OFF),但不是吗?

为什么不通过我的if语句?

提前致谢

1 个答案:

答案 0 :(得分:2)

Camera.Parameters.FLASH_MODE_ONCamera.Parameters.FLASH_MODE_OFFStrings。(here) 您需要使用equals()进行比较。

if(p.getFlashMode().equals(Parameters.FLASH_MODE_ON))