2015-01-03 74 views
0

我有兩項活動:activity_mainactivity_takeapicture。我從activity_main開始了一個意圖,其他活動拍攝了一張照片。然後activity_takeapicture發送另一個文件回到activity_main。在activity_main應該使用onActivityResult方法來捕獲由activity_takeapicture發送的意圖並隨後接收數據?這裏是發送在activity_main意圖的一部分:Android - 傳遞intents來回

Intent intent = new Intent(this, DisplayResult.class); 
    startActivity(intent); 

,這裏是「activity_takeapicture`:

Intent intent = new Intent(context, MainActivity.class); 
     intent.putExtra(Intent.EXTRA_STREAM, pictureFile); 
     startActivity(intent); 

編輯:我已經試過什麼你們說,但現在onActivityResultactivity_takeapicture將意圖返回時觸發。我如何解決這個問題?

+0

yeap,給一個代碼 –

+0

有趣的是,我昨晚搜索了完全一樣的東西。我發現這個:[如何管理Android上的結果的開始活動?](http://stackoverflow.com/questions/10407159/how-to-manage-start-activity-for-result-on-android) –

+0

@ÜberLem現在我的應用程序剛剛崩潰,沒有錯誤信息。 – SalmonKiller

回答

0

如果activity_takeapicture節省了設備的SD卡上的圖片,可以使用以下內容。

intent.putExtra("SavedImageDirectory", filepath); //this will save the file path 

然後在activity_main可以使用

//this will get the file path of the saved image 
String ImageDirectory = getIntent().getStringExtra("SavedImageDirectory"); 

//this will decode the filepath into a bitmap 
Bitmap bp = BitmapFactory.decodeFile(ImageDirectory); 

//this will display the bitmap on your imageview on the `activity_main` 
MyImageView.setImageDrawable(bp); 
0

你可以這樣做,但你將不得不關閉所有你打開的意圖,以避免內存使用,當你回來按你不會看到超過9000個活動xD 它不會避免內存使用,因爲它會只有在你回到它之後關閉te活動。

,你也可以使用alnActivityResult,這是更好的解決方案,因爲你沒有打開太多的活動,這是簡單的給您和您的用戶

0

試試這個:

在類inialize一個靜態變量

private static final int CAM_REQUEST = 1; 

在您的按鈕監聽方法

public void onClick(View v){ 
    Intent takePictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
    startActivityForResult(takePictureIntent, CAM_REQUEST); 
} 

,然後在活動覆蓋此方法:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data){ 
    if(requestCode == CAM_REQUEST){ 
     Bitmap thumbTaken = (Bitmap) data.getExtras().get("data"); 
     yourImageView.setImageBitmap(thumbTaken); 
    } 
} 

不要忘記給予准許使用CAMERA

希望它可以幫助!

0

請勿使用startActivity。改爲使用startActivityForResult