2013-12-09 70 views
-1
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent,TAKE_PHOTO_WITH_DATA); 

大家好,我有兩個問題。
上面的代碼會顯示「TAKE_PHOTO_WITH_DATA不能被解析爲一個變量」錯誤,
我使用SDK 2.2.3,但改變4.2.2錯誤仍然存​​在,
有什麼錯「TAKE_PHOTO_WITH_DATA」?
順便提一句,
有沒有「TAKE_VIDEO_WITH_DATA」或「TAKE_SOUND_WITH_DATA」可以使用?
非常感謝。Android TAKE_PHOTO_WITH_DATA無法解析爲變量

回答

2

TAKE_PHOTO_WITH_DATA是開始Activty一個int變量..

你必須在全球範圍內聲明。像:

private static final int TAKE_PHOTO_WITH_DATA = 0; 

當你罵startActivityForResult方法與int變量然後onActivtyResult()方法,你可以從畫廊或相機中使用這個變量,它是requestcode的活動讓你的形象。

表示它是來自它的請求代碼,您可以識別具體執行的操作 由於請求代碼沒有(也不應該)需要知道此值,所以不會自動將請求代碼傳遞給啓動的活動。它只需要知道該做什麼,而不需要從哪裏開始。

開始一個活動實際上只是另一種調用方法的形式。當你調用一個方法時,你會同步地收到結果(就在你撥打電話的地方)。在這種情況下,您只傳遞該方法需要完成其工作的信息。你不是在告訴它你從哪裏來的。

開始活動是調用方法的異步模擬,在這種情況下,您會在特殊方法onActivityResult()中收到結果。在這種方法中,你需要知道你剛剛收到的結果該怎麼做,並且你有這個請求代碼。

+0

Aaaa ...這就是它!變量是請求代碼!非常感謝你。但它是一樣的使用這種方式來獲得像視頻或聲音的媒體? – franzhong

+0

是的......你可以記住,如果你想調用兩個不同的東西,那麼你必須聲明兩個不同的請求代碼,並賦予它不同的賦值。然後根據需要使用onActivityResult() – Piyush

0

只要您不聲明特定變量,它就會顯示錯誤,TAKE_PHOTO_WITH_DATA不過是一個請求代碼,您甚至可以直接使用整數而不是像startActivityForResult(intent,1);它僅用於檢查結果,您可以閱讀更多關於請求代碼android developer site