Android应用 - 没有这样的方法异常

时间:2012-07-27 21:23:48

标签: java android illegalstateexception

我正在尝试创建一个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);
    }

}

3 个答案:

答案 0 :(得分:1)

错误说:找不到方法 dispatchTakePhotoIntent(查看

您调用dispatchTakePhotoIntent并将View对象作为其参数,而在您的代码中定义了:

public void dispatchTakePhotoIntent(int actionCode) 

以整数作为参数。

在代码中调用方法时出现问题。

答案 1 :(得分:0)

在视图类android.widget.Button上的onClick处理程序的活动类com.example.mydressingroom.MainActivity中找不到方法 dispatchTakePhotoIntent(View)

您似乎可能正在向方法发送视图,而不是发送方法属性中定义的整数。

答案 2 :(得分: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中进行开发,则应该在代码中出现错误(错误行所在的红叉)。