2015-09-15 3 views
1

Я пытаюсь реализовать решение, которое нашел HERE , но после того, как я нажал кнопку захвата, кнопка «Назад» не завершила действие. Есть ли способ вызоваОбратная кнопка не работает после снятия картинки

finish(); 

когда кнопка назад нажата в функции

private void capture() { 
    mCamera.takePicture(null, null, null, new Camera.PictureCallback() { 
     final float bearing = degree; 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      latitude = mGpsLocationTracker.getLatitude(); 
      longitude = mGpsLocationTracker.getLongitude(); 

      Toast.makeText(getApplicationContext(), "Picture Taken", 
        Toast.LENGTH_SHORT).show(); 

      Toast.makeText(getApplicationContext(), "" + 
        latitude + ", " + longitude, Toast.LENGTH_SHORT).show(); 

      Toast.makeText(getApplicationContext(), "" + bearing, Toast.LENGTH_SHORT).show(); 

      Intent intent = new Intent(); 
      intent.putExtra("image_arr", data); 
      setResult(RESULT_OK, intent); 
      camera.stopPreview(); 
      if (camera != null) { 
       camera.release(); 
       mCamera = null; 
      } 
      finish(); 
     } 
    }); 
} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    finish(); 
} 
+0

какое приложение показывает после захвата? – Fakher

+0

Он просто отображает захваченное изображение в представлении –

+0

сделал ли вы попытку переопределить backbuttonPressed метод ?? – Fakher

ответ

1

Ok вместо doying finish(); попробовать для достижения желаемого значения activity:

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    startActivity(new Intent(YourActivity, DesiredActivity)); 
    finish(); 
} 
+0

Это сработало! Вы случайно не знаете, почему обычная кнопка «Назад» не работает? Мне просто любопытно –

+0

жаль, что у меня нет объяснений по этому поводу, но может быть, потому что вы должны указать действие, которое нужно выполнить, прежде чем вы убьете текущую деятельность. – Fakher

0

Попробуйте метод Перекрытие OnKey в классе деятельности

@Override 
public boolean onKey(View v, int keyCode, KeyEvent event) 
{ if (event.getAction() == KeyEvent.ACTION_UP) 
    { finish(); 
    } 
    return false; 
}; 
+0

Не имеет ли функция 'onBackPressed()' переопределить ту же самую вещь? Когда я добавляю этот код, я получаю сообщение об ошибке, что он не отменяет метод из суперкласса –

+0

Добавьте это в свой метод onBackPressed: super.onBackPressed(); –

+0

И до финиша(); метод –