2012-07-27 58 views
2

我想創建一個涉及按下一個按鈕拍攝照片的Android應用程序。我的代碼是乾淨的,沒有任何警告或錯誤,但是當我在模擬器上運行它時,只要按下應用程序中的照片按鈕,它就會說您的應用程序已停止。當我檢查日誌文件以獲取解釋時,我以下Android應用程序 - 沒有這樣的方法例外

任何幫助,將不勝感激。先謝謝你。

07-27 20:44:11.676: E/AndroidRuntime(453): FATAL EXCEPTION: main 
    07-27 20:44:11.676: E/AndroidRuntime(453): java.lang.IllegalStateException: Could not find a method dispatchTakePhotoIntent(View) in the activity class com.example.mydressingroom.MainActivity for onClick handler on view class android.widget.Button 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.view.View$1.onClick(View.java:3026) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.view.View.performClick(View.java:3480) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.view.View$PerformClick.run(View.java:13983) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.os.Handler.handleCallback(Handler.java:605) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.os.Handler.dispatchMessage(Handler.java:92) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.os.Looper.loop(Looper.java:137) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.app.ActivityThread.main(ActivityThread.java:4340) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at java.lang.reflect.Method.invokeNative(Native Method) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at java.lang.reflect.Method.invoke(Method.java:511) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at dalvik.system.NativeStart.main(Native Method) 
    07-27 20:44:11.676: E/AndroidRuntime(453): Caused by: java.lang.NoSuchMethodException: dispatchTakePhotoIntent [class android.view.View] 
    07-27 20:44:11.676: E/AndroidRuntime(453): at java.lang.Class.getConstructorOrMethod(Class.java:460) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at java.lang.Class.getMethod(Class.java:915) 
    07-27 20:44:11.676: E/AndroidRuntime(453): at android.view.View$1.onClick(View.java:3019) 
    07-27 20:44:11.676: E/AndroidRuntime(453): ... 11 more 

這裏是我的代碼

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.provider.MediaStore; 

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
    } 


    /** Called when the user clicks the Photo button */ 
    public void dispatchTakePhotoIntent(int actionCode) { 
      Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(takePhotoIntent, actionCode); 
    } 

} 

回答

0

創建中調用該方法

private static final int TAKE_PHOTO_REQUEST = 100; 

,並調用方法

dispatchTakePhotoIntent(TAKE_PHOTO_REQUEST); 

和你的方法測試中的請求代碼的類中的常數:

public void dispatchTakePhotoIntent(int actionCode) { 
    if (actionCode == 100) { 
     Intent takePhotoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(takePhotoIntent, actionCode); 
    } 
    } 

問題在於你通過傳遞給圖像的視圖來調用方法排除/顯示,而不是你想要攜帶的動作。因此,編譯器找到了調用dispatchTakePhotoIntent(View)的方法,因爲您已定義dispatchTakePhotoIntent(int),因此無法在代碼中找到該方法。

如果你在eclipse中開發,你應該在你的代碼中得到一個錯誤(錯誤所在行上的紅色十字)。

1

錯誤說:無法找到一個方法dispatchTakePhotoIntent(查看

你用視圖對象作爲參數調用dispatchTakePhotoIntent而在你的代碼中你已經定義了:

public void dispatchTakePhotoIntent(int actionCode) 

以整數作爲參數。

在代碼中調用方法時存在問題。

+0

感謝您的回覆,這確實解釋了什麼是問題,但是,我是新來的android請你解釋如何發送一個整數而不是視圖dispatchTakePhotoIntent(int actionCode)?再次感謝提前。 – 2012-07-27 22:22:48

+0

嘿,我一直在線,一直在給你發消息,但你退出了。我仍然在線 – 2012-08-22 18:13:25

+0

我其實看到這個答案是最直接的。我有同樣的問題,並意識到這是因爲我錯過了我的View元素被傳遞給一個無參數函數。 Upvoted。 – dudewad 2012-10-12 20:23:31

0

找不到方法dispatchTakePhotoIntent(查看)在活動課com.example.mydressingroom.MainActivity爲的onClick處理程序上的視圖類android.widget.Button

看來你可能會被髮送給瀏覽該方法不是像在method屬性中定義的那樣發送整數。

+0

感謝您的回覆,這確實解釋了什麼是問題,但是,我是新來的android請你解釋如何發送一個整數而不是視圖dispatchTakePhotoIntent(int actionCode)?再次感謝提前。 – 2012-07-27 22:21:46

相關問題