2016-12-10 3 views
0

私はアンドロイドに新しいです、そして、私は写真アルバムアプリを書いています。私はユーザーから画像を取得してアルバムに保存しようとしています。ここに私のコードスニペットは、私の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(); 
         } 
        } 
       }); 

    } 
} 

ユーザーが開いたアルバムに写真を追加するには、[追加]ボタンをクリックしたときにaddメソッドが呼び出されます。ただし、デバッガツールを使用すると、プログラムは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 publicを@Override protectedに変更します。これを設定します。

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

変更このライン。あなたは= 0に変更、RESULT_LOAD_IMAGEは> 0であることを指摘しています。

public int SELECT_IMAGE=0; 
+0

まだ同じ動作をします – Hamon148

+0

私は答えを編集しました。これを試して。 – Dharmishtha

+0

働いているようですが、0に変更すると何が変わるのか説明できますか? – Hamon148