fragment中的add问题

小孔4363 发布于 2015/06/13 22:04
阅读 1K+
收藏 0
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)

加载中
0
Kinegratii
Kinegratii
import android.app.Fragment;

 改为

import android.support.v4.app.Fragment





返回顶部
顶部