2017-02-22 2 views
-1

Это мой код:Вызов метода, который имеет броски IOException

public class CameraFragment extends Fragment{ 

String mCurrentPhotoPath = ""; 

@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    try { 
     dispatchTakePictureIntent(); // Here I try to call this method 
    } catch (IOException dfg) { 
     Toast.makeText(getContext(), "ERROR!", Toast.LENGTH_LONG).show(); 
    } 
    //dispatchTakePictureIntent(); //I can't call this like I did here 

    return inflater.inflate(R.layout.fragment_camera, container, false); 
} 

ImageView SkimmedImageImg; 
@Override 
public void onViewCreated(View view, Bundle savedInstanceState){ 
    super.onViewCreated(view, savedInstanceState); 
    SkimmedImageImg = (ImageView)view.findViewById(R.id.SkimmedImg); 
} 

static final int REQUEST_IMAGE_CAPTURE = 1; 

private void dispatchTakePictureIntent() throws IOException{ 
    ..CODE.. 
    photo = createImageFile(); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    ..CODE.. 
} 

private File createImageFile() throws IOException{ 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp + "_"; 
    File storageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_DCIM), "Camera"); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = "file:" + image.getAbsolutePath(); 
    return image; 
} 

} 

Как я могу исправить эту проблему? Я не могу удалить «throws IOException» из каждой функции, потому что мне нужно вызвать «createImageFile()», и это не работает без «throws IOException».

Некоторые идеи? Спасибо!

+0

вы узнали что-нибудь об обработке исключений? В частности 'try' или' catch'? –

+1

Ваш предыдущий ответ правильно использовал его ... Почему вы не использовали этот код? http://stackoverflow.com/a/42330491/2308683 –

+0

«Как я могу исправить эту проблему?» Какая проблема? Какова конкретная ошибка? – Alex

ответ

0

В коде ...

//dispatchTakePictureIntent(); //I can't call this like I did here 

Право ... Вы не можете назвать это без try-catch -ing. Метод throws


Опять же, в вашем коде

try { 
    dispatchTakePictureIntent(); // Here I try to call this method 
} catch (IOException dfg) { 
    Toast.makeText(getContext(), "ERROR!", Toast.LENGTH_LONG).show(); 
} 

Вы назвали метод тонкой. Вы «поймали» исключение, которое объявляется throws.

Если вы хотите на самом деле «увидеть» ошибку, не тост. Это плохой дизайн пользовательского интерфейса, чтобы увидеть случайное всплывающее окно.

Используйте LOG (и имя dfg лучше)

catch (IOException ex) { 
    Log.e("ERROR: dispatchTakePictureIntent", ex.getMessage()); 
} 
Смежные вопросы