2016-12-10 3 views
0

Я новичок в android, и я пишу приложение для фотоальбома. Я пытаюсь получить изображение от пользователя и сохранить его в альбоме. Вот мои фрагменты кода из моей деятельности AlbumOptions:startActivityForResult() не вызывается

public void add(View v){ 
    Intent i = new Intent(Intent.ACTION_PICK, 
      android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
    startActivityForResult(Intent.createChooser(i, "Choose Photo To Add"),RESULT_LOAD_IMAGE); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data){ 
    super.onActivityResult(requestCode, resultCode, data); 

    if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) 
    { 
     Uri selectedImage = data.getData(); 
     String[] filePathColumn = {MediaStore.Images.Media.DATA}; 

     Cursor cursor = getContentResolver().query(selectedImage, 
       filePathColumn, null, null, null); 
     cursor.moveToFirst(); 

     int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
     final String picturePath = cursor.getString(columnIndex); 
     cursor.close(); 

     //get a name for the photo 
     final EditText pName = new EditText(this); 
     new AlertDialog.Builder(this) 
       .setTitle("Create Album") 
       .setMessage("Enter album name:") 
       .setView(pName) 
       .setPositiveButton("Add Photo", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int whichButton) { 
         String name = pName.getText().toString(); 

         //check if photo name already exists, if not create it 
         if(!album.checkName(name)) 
         { 
          Photo p = new Photo(name, picturePath, ""); 
          photoList.add(p); 
          adapter.notifyDataSetChanged(); 
         } 
         //prompt error that photo name is taken 
         else 
         { 
          AlertDialog alertDialog = new AlertDialog.Builder(AlbumOptions.this).create(); 
          alertDialog.setTitle("Error"); 
          alertDialog.setMessage("Photo name already exists!"); 
          alertDialog.setButton(AlertDialog.BUTTON_NEUTRAL, "OK", 
            new DialogInterface.OnClickListener() { 
             public void onClick(DialogInterface dialog, int which) { 
              dialog.dismiss(); 
             } 
            }); 
          alertDialog.show(); 
         } 
        } 
       }); 

    } 
} 

Метод добавь вызывается, когда пользователь нажимает на кнопку Добавить, чтобы добавить фотографию в открытый альбом. Однако при использовании инструмента отладчика программа переходит на вызов startActivityForResult(). Я просмотрел различные сообщения, чтобы понять, что происходит не так, и я не могу понять, что происходит. RESULT_LOAD_IMAGE> 0, и я проверил свой файл манифеста, как это было предложено многими сообщениями, которые я видел. Любые отзывы приветствуются.

+0

Выбирать? –

+0

это всплывающие фотографии, чтобы выбрать, но если после того, как я выберу один, он ничего не делает – Hamon148

+1

Вы что-то зашли в 'onActivityResult'? Является ли этот код фрагментом или активностью? –

ответ

0

попробуйте этот код. Это поможет вам.

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(requestCode==SELECT_IMAGE){ 
     if(resultCode==RESULT_OK && null!=data){ 
       //do whatever you want. 
      } 
    } 

Сначала измените значение @Override на @Override protected. а также установить это.

Intent image=new Intent(); 
    image.setType("image/*"); 
    image.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(image,"select file"),SELECT_IMAGE); 

Изменение этой линии .Вы отметили, что RESULT_LOAD_IMAGE> 0, изменить это = 0;

public int SELECT_IMAGE=0; 
+0

По-прежнему дает то же поведение – Hamon148

+0

Я отредактировал ответ. попробуй это. – Dharmishtha

+0

Кажется, сработало, не могли бы вы объяснить, почему его изменение на 0 изменит что-нибудь? – Hamon148

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