完成()和后退按钮不能在我的手机上工作,并在AVD中正常工作

时间:2014-07-27 10:31:57

标签: mobile avd back

我有2项活动。从主要活动我用startActivityForResult调用第二个。在第二个我有一个按钮,调用相机拍照并使用startActivityForResult将其保存在SD中。 我遇到的问题是,当我打电话给相机并取回结果时,我再也无法完成第二个活动去第一个活动。按下后退按钮或从按钮调用完成()不再起作用。 关于它的奇怪之处在于它在AVD中工作正常并且在我的手机(三星Galaxy ace)中不起作用。 以下是带有问题的活动的完整代码:

public class Pc_esperaActivity extends Activity {
    //========================================================  CONSTANTES
    static final int REQUEST_IMAGE_CAPTURE = 1;
    static final int REQUEST_TAKE_PHOTO = 1;
    //======================================================== VARIABLES
    TextView ET_NOMBRE;
    TextView ET_PARTE;
    TextView ET_TELEFONO;
    TextView ET_FECHA;
    TextView ET_INCIDENCIA;
    TextView ET_DETALLES;
    TextView ET_FECHAESTADO; //VERR
    TextView ET_ESTADO;           //VERRRR
    ImageView IMG_ESTADO;
    ImageButton BTN_ACEPTAR;
    ImageButton BTN_ESTADO;
    ImageButton BTN_FOTO;
    ImageButton BTN_LLAMAR;
    pcenespera PC;
    Gallery GALERIA;
    foto ULTIMA_FOTO;   // Ultima foto sacada
    File ULTIMO_FILE;   // Ultima imagen almacenada en la memoria
    BaseAdapter ADAPTADOR_GALERIA;
    int ID_ESTADO;
    int INICIO; // Controla como se inició la activity, boton nuevo o seleccionando elemento existente
    Activity CONTEXTO;
    //======================================================== onCreate 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_pc_espera);
        Log.d("DEBUG", "onCreate Pc_esperaActivity"); //++++++++++++++++++++
        //-----------------------------------------------------
        CONTEXTO = this;
        ET_NOMBRE = (TextView)findViewById(R.id.et_nombre);
        ET_PARTE = (TextView)findViewById(R.id.et_parte);
        ET_TELEFONO = (TextView)findViewById(R.id.et_telefono);
        ET_FECHA = (TextView)findViewById(R.id.et_fecha);
        ET_INCIDENCIA = (TextView)findViewById(R.id.et_incidencia);
        ET_DETALLES = (TextView)findViewById(R.id.et_detalles);
        ET_FECHAESTADO = (TextView)findViewById(R.id.et_fechaestado); //VERR
        ET_ESTADO = (TextView)findViewById(R.id.et_estado);           //VERRRR
        IMG_ESTADO = (ImageView)findViewById(R.id.img_estado);
        BTN_ACEPTAR = (ImageButton)findViewById(R.id.btn_aceptar);
        BTN_ESTADO = (ImageButton)findViewById(R.id.btn_estado);
        BTN_FOTO = (ImageButton)findViewById(R.id.btn_foto);
        BTN_LLAMAR = (ImageButton)findViewById(R.id.btn_llamar);
        GALERIA = (Gallery)findViewById(R.id.galeria);
        //-----------------------------------------------------
        //BTN_ACEPTAR.setEnabled(false);
        //BTN_LLAMAR.setEnabled(false);
        //-----------------------------------------------------
        Intent intent = getIntent();
        INICIO = intent.getIntExtra("TIPO", 1);
        if (INICIO == MainActivity.PC_NUEVO) {
            Log.d("--DEBUG--", "PC_NUEVO"); //++++++++++++++++++++
            ET_NOMBRE.setText("");
            ET_PARTE.setText("");
            ET_TELEFONO.setText("");
            ET_FECHA.setText("");
            ET_INCIDENCIA.setText("");
            ET_DETALLES.setText("");
            ET_FECHAESTADO.setText("");
            ET_ESTADO.setText(R.string.estado_0);
            IMG_ESTADO.setImageResource(android.R.drawable.ic_menu_crop);
            ID_ESTADO = 0;
            PC = new pcenespera();  // Creo el PC nuevo
            Log.d("--DEBUG--", "fin PC_NUEVO"); //++++++++++++++++++++
        }
        if (INICIO == MainActivity.PC_EXISTENTE) {
            Log.d("--DEBUG--", "PC_EXISTENTE"); //++++++++++++++++++++
            PC = intent.getParcelableExtra("PC_SELECCIONADO");  // Importo el PC de la actividad principal
            Log.d("--DEBUG--", "Comienzo de seteo de valores"); //++++++++++++++++++++
            ET_NOMBRE.setText(PC.getNOMBRE());
            ET_PARTE.setText(String.valueOf(PC.getPARTE()));
            ET_TELEFONO.setText(PC.getTELEFONO());
            ET_FECHA.setText(PC.getFECHA());
            ET_INCIDENCIA.setText(PC.getINCIDENCIA());
            ET_DETALLES.setText(PC.getDETALLES());
            ET_FECHAESTADO.setText(PC.getFECHAESTADO());
            ID_ESTADO = PC.getID_ESTADO();
            switch (ID_ESTADO){     // Establezco el texto del estado y la imagen del estado
                case 0: ET_ESTADO.setText(R.string.estado_0);
                        IMG_ESTADO.setImageResource(R.drawable.ic_launcher);
                case 1: ET_ESTADO.setText(R.string.estado_1);
                        IMG_ESTADO.setImageResource(R.drawable.ic_launcher);
                case 2: ET_ESTADO.setText(R.string.estado_2);
                        IMG_ESTADO.setImageResource(R.drawable.ic_launcher);
                case 3: ET_ESTADO.setText(R.string.estado_3);
                        IMG_ESTADO.setImageResource(R.drawable.ic_launcher);
                case 4: ET_ESTADO.setText(R.string.estado_4);
                        IMG_ESTADO.setImageResource(R.drawable.ic_launcher);
            }
            Log.d("--DEBUG--", "Finalizacion de seteo de valores"); //++++++++++++++++++++
        }
        Log.d("--DEBUG--", "a poner adaptador de galeria"); //++++++++++++++++++++
        ADAPTADOR_GALERIA = new ADA_galeria(CONTEXTO, PC.getIMAGENES());
        GALERIA.setAdapter(ADAPTADOR_GALERIA);
        Log.d("--DEBUG--", "adaptador de galeria puesto"); //++++++++++++++++++++
        //----------------------------------------------------- BOTON ACEPTAR
        BTN_ACEPTAR.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v) {
                Log.d("--DEBUG--", "Clicheado BOTON ACEPTAR"); //++++++++++++++++++++
                //Si los datos estan ok
                if (Validar()) { //Devuelvo los valores resultado
                    Intent returnIntent = new Intent();
                    if (PC.getIMAGENES() == null) {
                        Log.d("--DEBUG--", "BBBB PC.getIMAGENES() == null"); //++++++++++++++++++++
                    }
                    // Asigno los valores de los EditText a el objeto PC
                    PC.setNOMBRE(ET_NOMBRE.getText().toString());
                    PC.setPARTE(Integer.parseInt(ET_PARTE.getText().toString()));
                    PC.setTELEFONO(ET_TELEFONO.getText().toString());
                    PC.setFECHA(ET_FECHA.getText().toString());
                    PC.setINCIDENCIA(ET_INCIDENCIA.getText().toString());
                    PC.setDETALLES(ET_DETALLES.getText().toString());
                    PC.setID_ESTADO(ID_ESTADO);
                    PC.setFECHAESTADO(ET_FECHAESTADO.getText().toString());
                    Log.d("--DEBUG--", "Valores asignados"); //++++++++++++++++++++
                    // Devuelvo el PC con el intent
                    returnIntent.putExtra("PC_RESULTADO", PC);
                    setResult(RESULT_OK,returnIntent);
                    Toast.makeText(CONTEXTO, "Resultado de actividad pasado. Falta FINISH", Toast.LENGTH_LONG).show();
                    CONTEXTO.finish();
                    Toast.makeText(CONTEXTO, "FINISH EJECUTADO", Toast.LENGTH_LONG).show();
                    }       
                }       
        });
        //----------------------------------------------------- BOTON LLAMAR
        BTN_LLAMAR.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View arg0) {
                String TEL = ET_TELEFONO.getText().toString();
                Intent INTENT_LLAMAR = new Intent(Intent.ACTION_CALL);
                INTENT_LLAMAR.setData(Uri.parse("tel:" + TEL));
                startActivity(INTENT_LLAMAR);       
            }           
        });
        //----------------------------------------------------- BOTON FOTO
        BTN_FOTO.setOnClickListener(new OnClickListener(){
        @Override
            public void onClick(View v) {
                Log.d("DEBUG", "BOTON FOTO CLICKADO"); //++++++++++++++++++++
                dispatchTakePictureIntent();
                Log.d("DEBUG", "PROCESADO FOTO TERMINADO"); //++++++++++++++++++++
            }   
        });
        //----------------------------------------------------- IMAGEN DE GALERIA
        GALERIA.setOnItemClickListener(new OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int posicion,
                    long arg3) {
                show_fullscreen(PC.getIMAGENES().get(posicion).getRUTA());
            }   
        });
        //----------------------------------------------------- 
    }
    //========================================================  onDestroy
    @Override
    protected void onDestroy() {
        Toast.makeText(CONTEXTO, "onDestroy", Toast.LENGTH_LONG).show();;
        super.onDestroy();
    }
    //========================================================  RESULTADO DE ACTIVIDAD LAMADA
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) {
            ULTIMA_FOTO.setHD(BitmapFactory.decodeFile(ULTIMA_FOTO.getRUTA()));     // Asigno la imagen tomada
            ADAPTADOR_GALERIA.notifyDataSetChanged(); // Luego de que la foto se sacó actualizo la galeria
        }
        if (requestCode == REQUEST_TAKE_PHOTO && resultCode == RESULT_CANCELED) {
            if(ULTIMO_FILE.delete() == true){       // Borro el archivo creado
                Log.d("DEBUG", "Archivo de imagen temporal borrado"); //++++++++++++++++++++
            }
        }
    }
    //========================================================  VALIDA LOS DATOS INGRESADOS
    private boolean Validar(){
        boolean OK = true;
        if (ET_NOMBRE.length() == 0) {
            Toast.makeText(CONTEXTO, "Falta introducir un nombre", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_PARTE.length() == 0) {
            Toast.makeText(CONTEXTO, "Falta introducir un número de parte", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_TELEFONO.length() == 0) {
            Toast.makeText(CONTEXTO, "Falta introducir un teléfono", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_FECHA.length() == 0) {
            Toast.makeText(CONTEXTO, "Falta introducir la fecha del parte", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_INCIDENCIA.length() == 0) {
            Toast.makeText(CONTEXTO, "Falta introducir la incidencia", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_DETALLES.length() == 0) {
            Toast.makeText(CONTEXTO, "Faltan introducir los detalles de la incidencia", Toast.LENGTH_LONG).show();
            OK = false;
        }
        if (ET_ESTADO.length() == 0) {
            Toast.makeText(CONTEXTO, "Faltan introducir el estado", Toast.LENGTH_LONG).show();
            OK = false;
        }
        return OK;
    }
    //======================================================== CREA EL ARCHIVO DE LA IMAGEN Y LA ALMACENA
    private File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "EEE" + "-" + timeStamp;
        File carpeta = new File(Environment.getExternalStorageDirectory() + "/EEE Imagenes");
        boolean OK = false;
        if (!carpeta.exists()){
            OK = carpeta.mkdir();
        }
        if (OK){

        }
        else{

        }
        File image = File.createTempFile(imageFileName, ".jpg", carpeta);
        // Save a file: path for use with ACTION_VIEW intents
        return image;
    }
    //========================================================
    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File
            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                Log.d("DEBUG", "photoFile != null"); //++++++++++++++++++++
                ULTIMO_FILE = photoFile;
                ULTIMA_FOTO = PC.addIMAGEN(new foto(photoFile.getAbsolutePath(), null, null)); // Agrego la ruta de la imagen al arraylist
                Log.d("--> DEBUG", "RUTA DONDE SE GUARDO LA FOTO: " + photoFile.getAbsolutePath()); //++++++++++++++++++++
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }
    //========================================================   MUESTRA LA IMAGEN EN PANTALLA COMPLETA
    private void show_fullscreen(String IMG_PATH){ //VERRRRR DE NO USAR RUTA
        Intent intent_ver = new Intent();
        intent_ver.setAction(android.content.Intent.ACTION_VIEW); 
        intent_ver.setDataAndType(Uri.fromFile(new File(IMG_PATH)),"image/*");
        startActivity(intent_ver);
    }
    //========================================================
}

0 个答案:

没有答案