2011-11-01 153 views
0

我正在製作一個android應用程序,我需要在點擊時放大圖像大小。 我得到從服務器下載的這些圖像,然後以編程方式在活動中添加這些圖像,並因此以編程方式設置圖像的ID。現在我的問題是,當我發送imageid o另一個活動來放大它時,它只取最後一張圖片的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

雅它肯定會給最後一個ID,因爲imageId的值將在每個循環中更新。這將在循環過程中存儲最後一個已知值。

您應該使用數組而不是簡單變量。

或者您可以在onClick方法中使用v.getId。 (更簡單一個)

+0

即使在onclick方法中獲取id也會給我相同的異常 – Aditya1510

+0

您可以在onClick中記錄ID並查看它返回的內容。如果它不是用於ID的,那麼InputStream中的錯誤應該是= this.getResources()。openRawResource(imageId); – Hardik4560

+0

雅其可能,但你需要一個接收和發送文本的服務器。接收器也應該有你的應用程序。 – Hardik4560