ImageButton setImageResource崩溃的应用程序

时间:2014-03-04 13:14:36

标签: java android onclick imagebutton

所以我遇到了一个小问题。我知道解决方案是明显而简单的,但我是编程的新手,似乎无法理解它。

基本上,我一直在使用Android Studio关注Flashlight教程。在本教程中,他们使用了一个简单的按钮,可以切换到Flashlight ON和Flashlight OFF模式。

我不想只使用一个按钮,而是想要使用ImageButton代替整个屏幕,点击图像会打开手电筒并更改图像。

因此,我只是在闪存转为setImageResource更改后修改代码。但不幸的是,点击该图片会让应用程序崩溃:(

希望有人可以帮助一个菜鸟!下面是我的主Java文件。


        package com.dbz.flash;

        import android.app.Activity;
        import android.content.Context;
        import android.content.pm.PackageManager;
        import android.hardware.Camera;
        import android.hardware.Camera.Parameters;
        import android.os.Bundle;
        import android.util.Log;
        import android.view.View;
        import android.view.View.OnClickListener;
        import android.widget.ImageButton;
        import android.widget.Toast;

        public class MainActivity extends Activity {
            private boolean isFlashOn = false;
            private Camera camera;
            private ImageButton btnSwitch;

            @Override
            protected void onStop() {
                super.onStop();

                if (camera != null) {
                    camera.release();
                }
            }

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                btnSwitch = (ImageButton) findViewById(R.id.btnSwitch);
                Context context = this;
                PackageManager pm = context.getPackageManager();


                if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
                    Log.e("err", "Device has no camera!");
                    Toast.makeText(getApplicationContext(),
                            "Your device doesn't have camera!",
                            Toast.LENGTH_SHORT).show();

                    return;
                }

                camera = Camera.open();
                final Parameters p = camera.getParameters();

                btnSwitch.setOnClickListener(new OnClickListener() {
                    public void onClick(View arg0) {
                        if (isFlashOn) {
                            Log.i("info", "torch is turned off!");
                            p.setFlashMode(Parameters.FLASH_MODE_OFF);
                            camera.setParameters(p);
                            isFlashOn = false;
                            //button.setText("Torch-ON");
                            btnSwitch.setImageResource(R.drawable.off);
                        } else {
                            Log.i("info", "torch is turned on!");
                            p.setFlashMode(Parameters.FLASH_MODE_TORCH);
                            camera.setParameters(p);
                            isFlashOn = true;
                            //button.setText("Torch-OFF");
                            btnSwitch.setImageResource(R.drawable.on);
                        }
                    }
                });

            }
        }
        `

0 个答案:

没有答案