2011-11-01 6 views
0

클릭하면 이미지 크기가 커질 수있는 Android 앱을 만들고 있습니다. 이러한 이미지를 서버에서 다운로드 한 다음 이러한 이미지를 프로그래밍 방식으로 활동에 추가하므로 이미지의 ID를 프로그래밍 방식으로 설정해야합니다. 이제 내 문제는 내가 imageid를 보내면 다른 활동이 그것을 확대하기 때문에 마지막 이미지의 ID 만 가져옵니다.android : 클릭시 이미지 확대

이며, 따라서 다음 예외를 제공한다.

Unable to start activity ComponentInfo{com.emx.OnDaMove/com.emx.OnDaMove.FullImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x5 

이미지를 만들고 테이블 행에 추가하는 데 다음 코드를 사용하고 있습니다.

   imageUrl = "http://ondamove.it/English/images/users/"; 
      imageUrl = imageUrl + listObject.get(j).getImage(); 

      image = new ImageView(this); 
      image.setPadding(20, 10, 0, 0); 
      image.setId(j+1); 
      imageId=image.getId(); 
          tr.addView(image); 

및 clickliastener에 대한 다음과 같은 방법

 private OnClickListener clickImageListener = new OnClickListener() { 
    public void onClick(View v) { 
     Intent fullScreenIntent = new Intent(v.getContext(),FullImageActivity.class); 
     fullScreenIntent.putExtra(ProfilePageNormalUser.class.getName(),imageId) ; 
     ProfilePageNormalUser.this.startActivity(fullScreenIntent); 

    } 
}; 

및 이미지 확대 작성할 수있는 활동은 다음과 같습니다

 ImageView myimage = (ImageView) findViewById(R.id.imageviewEnlarged); 

    Intent intent = getIntent(); 


    int imageId = (Integer) intent.getExtras().get(ProfilePageNormalUser.class.getName()); 
     System.out.println("********"+imageId +"**********"); 
     InputStream is = this.getResources().openRawResource(imageId); 
     Bitmap originalBitmap = BitmapFactory.decodeStream(is); 
     Matrix imageMatrix = new Matrix(); 
     imageMatrix.postRotate(90); 
     Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, myimage.getWidth(), myimage.getHeight(), originalBitmap.getWidth(), originalBitmap.getHeight(), imageMatrix, false); 
     myimage.setImageBitmap(scaledBitmap); 
     myimage.setScaleType(ScaleType.FIT_XY); 

답변

1

나중에 확실히는 이후 마지막 이드 줄 것이다 imageId의 값은 모든 루프에서 업데이트됩니다. 이것은 루핑 중에 마지막으로 알려진 값을 저장합니다.

간단한 변수 대신 배열을 사용해야합니다.

또는 onClick 메서드에서 v.getId를 사용할 수 있습니다. (더 단순한 것)

+0

심지어 onclick 메소드에서 id를 얻는 것은 나에게 동일한 예외를 준다. – Aditya1510

+0

onClick에 ID를 기록하고 반환되는 것을 볼 수 있는가? ID가 아닌 경우 오류가 InputStream에 있어야합니다. = this.getResources(). openRawResource (imageId); – Hardik4560

+0

예. 가능하지만 텍스트를주고받는 서버가 필요합니다. 또한 수신자도 앱을 준비해야합니다. – Hardik4560