2012-05-20 2 views
0

в своей деятельности, я могу пойти в галерею и выбрать изображение. После этого я могу вернуться к предыдущему сценарию. Но когда я пошел в галерею, если бы я не выбрал изображение и не нажал кнопку «Назад», я не смог бы перейти на предыдущий экран, и я получил силу. Как можно исправить это, не используя startActivity (намерение)? Вот мой код: первым я определенКогда нажата кнопка назад, я получил Force Close в Android

private static final int ACTIVITY_REQUEST_PICK_ATTACHMENT = 1; 

На активность Результат Код:

protected void onActivityResult(int requestCode, int resultCode, 
      Intent data) { 




    super.onActivityResult(requestCode, resultCode, data); 

      mAttachments = (LinearLayout) findViewById(R.id.attachments); 

      switch (requestCode) { 
      case ACTIVITY_REQUEST_PICK_ATTACHMENT: 

       Uri _uri = data.getData(); 

       addAttachment(_uri); 

       Cursor cursor = getContentResolver() 
         .query(_uri, 
           new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, 
           null, null, null); 
       cursor.moveToFirst(); 
       File imageFilePath = new File(cursor.getString(0)); 
       uris.add(imageFilePath); 
       names.add(imageFilePath.getName()); 

       Log.v("imageFilePath", imageFilePath.toString()); 
       break; 

я называю, что в здесь:

private void onAddAttachment2(final String mime_type) { 

     // setContentView(R.layout.main); 

     Intent i = new Intent(Intent.ACTION_GET_CONTENT); 
     i.addCategory(Intent.CATEGORY_OPENABLE); 
     i.setType(mime_type); 
     startActivityForResult(Intent.createChooser(i, null), 
       ACTIVITY_REQUEST_PICK_ATTACHMENT); 
    } 

ошибка на моей LogCat

05-20 13:16:39.809: E/AndroidRuntime(374): at my.mail.SenderActivity.onActivityResult(KepenekActivity.java:294) 

, когда я дважды щелкните на ошибку, он показывает линии

Uri _uri = data.getData(); 

логически это верно, мой _uri пуст, как я могу показать предыдущий экран с этим конечным состоянием здесь моя проблема.

+0

Добавить if (data! = Null && data.getData()! = Null) после случая ACTIVITY_REQUEST_PICK_ATTACHMENT: –

ответ

1

Вам необходимо добавить чек для кода результата.

protected void onActivityResult(int requestCode, int resultCode,Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    mAttachments = (LinearLayout) findViewById(R.id.attachments); 

    switch (requestCode) { 
     case ACTIVITY_REQUEST_PICK_ATTACHMENT: 
      if (resultCode == RESULT_OK) { // <------ THIS LINE IS IMPORTANT 
       Uri _uri = data.getData(); 

       addAttachment(_uri); 

       Cursor cursor = getContentResolver() 
        .query(_uri, 
          new String[] { android.provider.MediaStore.Images.ImageColumns.DATA }, 
          null, null, null); 
       cursor.moveToFirst(); 
       File imageFilePath = new File(cursor.getString(0)); 
       uris.add(imageFilePath); 
       names.add(imageFilePath.getName()); 

       Log.v("imageFilePath", imageFilePath.toString()); 
      } 
      break; 

При нажатии на заднюю кнопку вместо выбора чем-то ResultCode будет приготовьтесь к RESULT_CANCELLED вместо RESULT_OK. Вы можете использовать это различие, чтобы делать все, что вам нужно в любом случае.

+0

Большое вам спасибо .. Я использовал этот RESULT_OK в моем другом случае, но, однако, я был забыт использовать его там =) – yiddow

Смежные вопросы