2012-11-09 92 views
1

我管理,有很多從這裏的答案可以幫助,添加照片的通過爲他們創造imageviews平板到的LinearLayout拍攝。 的pageviewer裝載有很多相同的佈局類似的佈局的副本是自定義控件。每個佈局有一個按鈕來拍攝照片,並將其添加(或應該)以自己的LinearLayout中。如何獲得正確的上下文

但是....

照片已被拍攝後,將其放入linearview,但它是不是在正確的頁面。

有了這個代碼,它被放置在的LinearLayout:

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

    Bitmap mBitmap; 
    String _path = Environment.getExternalStorageDirectory().toString() + File.separator + "photo_" + String.valueOf(requestCode) + ".png"; 
    mBitmap = BitmapFactory.decodeFile(_path); 
    if (mBitmap == null) { 
     // bitmap still null 
    } else { 

     byte[] imageData = null; 

     try { 

      final int THUMBNAIL_SIZE = 64; 

      Float width = new Float(mBitmap.getWidth()); 
      Float height = new Float(mBitmap.getHeight()); 
      Float ratio = width/height; 
      mBitmap = Bitmap.createScaledBitmap(mBitmap, (int) (THUMBNAIL_SIZE * ratio), THUMBNAIL_SIZE, false); 

      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
      imageData = baos.toByteArray(); 

     } catch (Exception ex) { 

     } 


     ImageView iv = new ImageView(this); 
     LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
     iv.setLayoutParams(params); 
     iv.setImageBitmap(mBitmap); 
     iv.setTag(_path); 


     LinearLayout lvp = (LinearLayout) findViewById(R.id.lvPhotos); 
     lvp.addView(iv); 

    } 

} 

很顯然,我不應該使用這個所創建的ImageView的,但我如何獲得頁面的情況下在其上按鈕的被點擊相機?

RG, 埃裏克

回答

2

好了,你的問題就在這裏:

LinearLayout lvp = (LinearLayout) findViewById(R.id.lvPhotos); 

你發現這是擺在當前內容視圖的LinearLayout。你需要找到它上線應該是......

LinearLayout lvp = (LinearLayout) someView.findViewById(R.id.lvPhotos); 

但我猜測,這不是一個很好的解決方案。您可能要設置一個數組,讓您的意見實例,這樣就可以更容易地找到他們......與全球陣列

+0

左右,然後額外的意圖,我應該能夠得到正確的看法?聽起來像是個計劃。由於 – Eric

+0

很樂意幫忙... – yahya