2012-08-13 98 views
3

中的另一個活動我想通過單擊FirstActivity中的Capture按鈕捕獲後顯示圖像,並使用SecondActivity在activity_second(佈局)中顯示圖像。從另一個佈局中獲取圖像並使用另一個佈局使用Android

FirstActivity

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_first); 

    Button take_photo = (Button) findViewById(R.id.btn_capture); 
    take_photo.setOnClickListener(new OnClickListener() { 

      public void onClick(View v) { 
       Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivity(i); 
      } 
     }); 
} 

佈局activity_first

> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <Button 
     android:id="@+id/btn_capture" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="21dp" 
     android:text="Capture" /> 

</RelativeLayout> 

SecondActivity

> public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 

     ImageView view = (ImageView) findViewById(R.id.view_photo); 
    } 

activity_second

> <?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <ImageView 
     android:id="@+id/view_photo" 
     android:layout_width="260dp" 
     android:layout_height="374dp" /> 

</LinearLayout> 
+0

在我使用menifest,<使用許可權的android:NAME = 「android.permission.CAMERA」/> <使用,功能的Android:NAME = 「android.hardware.camera」 /> – kongkea 2012-08-13 03:02:58

+0

閱讀此http://developer.android.com/reference/android/app/Activity.html#StartingActivities – 2012-08-13 03:14:52

+0

哦,先生,我不知道如何接受因爲我只知道如何問 – kongkea 2012-08-13 03:33:20

回答

5

使用startActivityForResult()而不是startActivity()

  @Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // TODO Auto-generated method stub 
    super.onActivityResult(requestCode, resultCode, data); 
    Bitmap thumbnail = null; 
    if (requestCode == CAMERA_PIC_REQUEST) { 

     if (resultCode == RESULT_OK) { 

      thumbnail = (Bitmap) data.getExtras().get("data"); 

      Intent i = new Intent(this, NextActivity.class); 
      i.putExtra("name", thumbnail); 
      startActivity(i); 



     } 

    } 

} 

接下來的下一個活動嘗試使用此

 protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    //  intialize the image view 

Bitmap bitmap = getIntent().getExtras().getParcelable("data"); 
//set the image here. 
} 

希望這可以幫助你

+0

它不知道這個CAMERA_PIC_REQUEST,但我嘗試這一個'私人靜態最終詮釋CAMERA_PIC_REQUEST = 0;'在SecondActivity'view.setImageBitmap(bitmap);'中它打開相機,捕獲後它保持在SecondActivity – kongkea 2012-08-13 04:40:16

+0

的FirstActivity未顯示圖像,你使用startActivityForResult(intent,CAMERA_PIC_REQUEST);在第一個activity.private final int CAMERA_PIC_REQUEST = 1;足夠。我們不需要使用靜態。 – 2012-08-13 04:46:34

+0

我的代碼在上面。有什麼問題 – kongkea 2012-08-13 05:01:32

0

獲取您存儲的圖像的路徑,並將其作爲附加信息傳遞給onActivityResult()中的其他活動。 希望這可以幫助你。

+0

你可以完全我的代碼上面?我在2周前試圖找到解決方案,但是我不能。你能完成這個項目嗎?在此先感謝 – kongkea 2012-08-13 03:49:55

+0

你找到了我們建議的解決方案嗎? – 2012-08-13 06:48:58

+0

哦現在完成了,我用@Febi M Felix編碼。在此先感謝,併爲您麻煩您Sharath G – kongkea 2012-08-13 06:59:46

1
public void onClick(View v) 
    { 
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);      
    mImageCaptureUri = Uri.fromFile(new File(Environment.getExternalStorageDirectory(), 
             "image" + String.valueOf(System.currentTimeMillis()) + ".jpg")); 
    try 
     {      
      startActivityForResult(intent, PICK_FROM_CAMERA); 
     } 
    catch (ActivityNotFoundException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (resultCode != RESULT_OK) return;  
     switch (requestCode) 
      { 
       case PICK_FROM_CAMERA: 
        Bitmap photo = null;   
        Bundle extras = data.getExtras(); 
        if (extras != null) 
        {    
         photo = extras.getParcelable("data"); 
        } 
        Intent i = new Intent(this,SecondActivity.class); 
        i.putExtra("image", photo); 
        startActivity(i); 
        break; 
    } 

在第二個活動:

bMap = getIntent().getParcelableExtra("image"); 
    mImageView.setImageBitmap(bMap); 
+0

非常感謝你。它的工作現在 – kongkea 2012-08-13 07:00:29

+0

,但它不能保存到我的SD卡 – kongkea 2012-08-13 07:38:37

2

您可以使用下面的代碼來解決的問題:

您的第一項活動:

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_first); 
     Button take_photo = (Button) findViewById(R.id.btn_capture); 
     take_photo.setOnClickListener(new OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       // create Intent to take a picture and return control to the calling application 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       // start the image capture Intent 
       startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
      } 
     }); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) 
     { 
      Bitmap imageData = null; 
      if (resultCode == RESULT_OK) 
      { 
       imageData = (Bitmap) data.getExtras().get("data"); 

       Intent i = new Intent(this, SecondActivity.class); 
       i.putExtra("name", imageData); 
       startActivity(i); 

      } 
      else if (resultCode == RESULT_CANCELED) 
      { 
       // User cancelled the image capture 
      } 
      else 
      { 
       // Image capture failed, advise user 
      } 
     } 
    } 

和第二活動:

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_second); 
     Bitmap bitmap = getIntent().getExtras().getParcelable("name"); 
     ImageView view = (ImageView) findViewById(R.id.view_photo); 
     view.setImageBitmap(bitmap); 
    } 

和Manifest.xml文件使用權限:

<uses-feature android:name="android.hardware.camera" /> 

我希望這將正常工作

+0

非常感謝你 – kongkea 2012-08-14 00:38:51

+0

好的..請投票答案如果它對你有用... – Binu 2012-08-14 01:34:29

+0

可以ü回答這個問題http://stackoverflow.com/questions/11839042 /如何對做背景,推升時,點擊的EditText功能於Android的類似Facebook的日誌 – kongkea 2012-08-14 02:15:25

相關問題