Mobile finish()和back按钮在我的手机上不工作,在AVD中工作正常

Mobile finish()和back按钮在我的手机上不工作,在AVD中工作正常,mobile,avd,back,Mobile,Avd,Back,我有两项活动。从主要活动中,我使用startActivityForResult调用第二个活动。在第二个按钮上,我有一个按钮,可以调用相机拍摄照片并将其保存在SD中,并使用startActivityForResult。 我遇到的问题是,当我打电话给摄像机并返回结果时,我无法再完成第二个活动而转到第一个活动。按后退按钮或从按钮调用finish()不再起作用。 奇怪的是,它在AVD中运行良好,而在我的手机(三星galaxy ace)中不起作用。 以下是问题活动的完整代码: public class P

我有两项活动。从主要活动中,我使用startActivityForResult调用第二个活动。在第二个按钮上,我有一个按钮,可以调用相机拍摄照片并将其保存在SD中,并使用startActivityForResult。 我遇到的问题是,当我打电话给摄像机并返回结果时,我无法再完成第二个活动而转到第一个活动。按后退按钮或从按钮调用finish()不再起作用。 奇怪的是,它在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);
    }
    //========================================================
}
公共类Pc_esperaActivity扩展活动{
//==============================================================================================================================君士坦丁堡
静态最终整数请求\图像\捕获=1;
静态最终int请求\u拍摄\u照片=1;
//=========================================================================变量
文本视图等名称;
文本视图等;
TextView ET_TELEFONO;
TextView ET_FECHA;
TextView ET_INCIDENCIA;
文本视图等细节;
TextView ET_FECHAESTADO;//VERR
TextView ET_ESTADO;//VERRRR
ImageView IMG_ESTADO;
图像按钮BTN_接收器;
图像按钮BTN_ESTADO;
图像按钮BTN_FOTO;
图像按钮BTN_LLAMAR;
pcenespera-PC;
GALERIA画廊;
foto-ULTIMA_-foto;//ULTIMA-foto-sacada
File ULTIMO_File;//ultimagen almacenada en la memoria
巴塞多尔加雷里亚;
国际开发署;
INTINICIO;//控制活动,选择现有元素
活动情境;
//==============================================================================================onCreate
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u pc\u espera);
Log.d(“调试”,“onCreate Pc_esperaActivity”)//++++++++++++++++++++
//-----------------------------------------------------
CONTEXTO=这个;
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=(图像按钮)findViewById(R.id.BTN_LLAMAR);
GALERIA=(画廊)findViewById(R.id.GALERIA);
//-----------------------------------------------------
//BTN_ACEPTAR.setEnabled(false);
//BTN_LLAMAR.setEnabled(假);
//-----------------------------------------------------
Intent=getIntent();
INICIO=intent.getIntExtra(“TIPO”,1);
if(INICIO==MainActivity.PC_NUEVO){
Log.d(“--DEBUG--”,“PC\u numevo”)//++++++++++++++++++++
ET_NOMBRE.setText(“”);
另一方以“.”号填列;
ET_TELEFONO.setText(“”);
ET_FECHA.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”)//++++++++++++++++++++
}
如果(INICIO==MainActivity.PC_EXISTENTE){
Log.d(“--DEBUG--”和“PC_EXISTENTE”)//++++++++++++++++++++
PC=intent.getParcelableExtra(“PC_selectionado”);//导入活动主体
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();
开关(ID_ESTADO){//Establezco el texto del ESTADO y la imagen del ESTADO
案例0:ET_ESTADO.setText(R.string.ESTADO_0);
IMG_ESTADO.setImageResource(R.drawable.ic_启动器);
案例1:ET_ESTADO.setText(R.string.ESTADO_1);
IMG_ESTADO.setImageResource(R.drawable.ic_启动器);
案例2:ET_ESTADO.setText(R.string.ESTADO_2);
IMG_ESTADO.setImageResource(R.drawable.ic_启动器);
案例3:ET_ESTADO.setText(R.string.ESTADO_3);
IMG_ESTADO.setImageResource(R.drawable.ic_启动器);
案例4:ET_ESTADO.setText(R.string.ESTADO_4);
IMG_ESTADO.setImageResource(R.drawable.ic_启动器);
}
Log.d(“--DEBUG--”和“Finalizacion de seteo de valores”)//++++++++++++++++++++
}
Log.d(“--DEBUG--”,“一个poner Adapter de galeria”)//++++++++++++++++++++
Adadador_GALERIA=新ADA_GALERIA(CONTEXTO,PC.getIMAGENES());
GALERIA.setAdapter(Adaptedor_GALERIA);
Log.d(“--DEBUG--”和“Adaptedor de galeria puesto”)//++++++++++++++++++++
//-----------------------------------------------------波顿受体
BTN_ACEPTAR.setOnClickListener(新的OnClickList