fragment中的add问题

fragment中的add问题

终止放荡 发布于 2021-11-29 字数 11090 浏览 667 回复 1

package com.example.flashlightfragment;

import java.io.IOException;

import android.annotation.SuppressLint;

import android.annotation.TargetApi;

import android.app.AlertDialog;

import android.app.Fragment;

import android.content.DialogInterface;

import android.content.pm.PackageManager;

import android.hardware.Camera;

import android.os.Build;

import android.os.Bundle;

import android.support.v4.app.FragmentActivity;

import android.support.v4.app.FragmentManager;

import android.view.LayoutInflater;

import android.view.SurfaceHolder;

import android.view.SurfaceView;

import android.view.View;

import android.view.ViewGroup;

import android.widget.ImageButton;

import android.widget.ImageView;

@SuppressLint("NewApi")

public class MainActivity extends FragmentActivity {

 

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        

            if (isFlashSupported()) {

            if (savedInstanceState == null) {

            getSupportFragmentManager().beginTransaction().add(R.id.container, new FlashlightFragment()).commit();

            }

        } else {

            showNoFlashAlert();

        }

    }

 

    private void showNoFlashAlert() {

        new AlertDialog.Builder(this)

                .setMessage(R.string.device_not_support_msg)

                .setIcon(android.R.drawable.ic_dialog_alert).setTitle(R.string.device_not_support_title)

                .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {

 

                    @Override

                    public void onClick(DialogInterface dialog, int which) {

                        dialog.dismiss();

                        finish();

                    }

                }).create().show();

    }

 

    private boolean isFlashSupported() {

        PackageManager pm = getPackageManager();

        return pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

    }

 

    public static class FlashlightFragment extends Fragment implements SurfaceHolder.Callback {

 

        public FlashlightFragment() { }

 

        ImageButton btnSwitch;

        ImageView bg;

        private boolean isLighOn = false;

 

        private Camera camera;

        Camera.Parameters params;

 

        @Override

        public void onStart() {

            super.onStart();

            SurfaceView preview = (SurfaceView) getView().findViewById(R.id.PREVIEW);

            SurfaceHolder mHolder = preview.getHolder();

            mHolder.addCallback(this);

        }

 

        @Override

        public void onPause() {

            super.onPause();

            turnOffFlash();

        }

 

        @Override

        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

            View view = inflater.inflate(R.layout.fragement_main_activity, container, false);

 

            // flash switch button

            btnSwitch = (ImageButton) view.findViewById(R.id.flashlight_button);

 

            bg = (ImageView) view.findViewById(R.id.flashlight_bg);

 

            // displaying button image

            toggleBgImage();

 

            // Switch button click event to toggle flash on/off

            btnSwitch.setOnClickListener(new View.OnClickListener() {

 

                @Override

                public void onClick(View v) {

                    if (isLighOn) {

                        turnOffFlash();

                    } else {

                        turnOnFlash();

                    }

                }

            });

 

            return view;

        }

 

        // Turning On flash

        private void turnOnFlash() {

 

            if (!isLighOn) {

                if (camera == null || params == null) {

                    return;

                }

                params = camera.getParameters();

                params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

                camera.setParameters(params);

                camera.startPreview();

                isLighOn = true;

 

                toggleBgImage();

            }

 

        }

 

        // Turning Off flash

        private void turnOffFlash() {

 

            if (isLighOn) {

                if (camera == null || params == null) {

                    return;

                }

 

                params = camera.getParameters();

                params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

                camera.setParameters(params);

                camera.stopPreview();

                isLighOn = false;

 

                toggleBgImage();

            }

        }

 

        private void toggleBgImage() {

            if (isLighOn) {

                bg.setImageResource(R.mipmap.f_on);

            } else {

                bg.setImageResource(R.mipmap.f_off);

            }

        }

 

        @Override

        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {

 

        }

 

        @Override

        public void surfaceDestroyed(SurfaceHolder holder) {

            if (camera != null) {

                camera.stopPreview();

                camera.setPreviewCallback(null);

                camera.release();

                camera = null;

            }

        }

 

        @Override

        public void surfaceCreated(SurfaceHolder holder) {

            if (camera == null) {

                camera = Camera.open();

                params = camera.getParameters();

                try {

                    camera.setPreviewDisplay(holder);

                } catch (IOException e) {

                    camera.release();

                    camera = null;

                }

            }

 

            turnOnFlash();

        }

 

    }

 

 

}

错误在onCreate中判断中的add:The method add(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, MainActivity.FlashlightFragment)

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蓝颜夕 2021-11-30 1 楼
import android.app.Fragment;

 改为

import android.support.v4.app.Fragment