2

写真を撮るボタンを押すことを含む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);
    }

}
4

3 に答える 3

1

エラーは次のように述べています:メソッドdispatchTakePhotoIntent(View)が見つかりませんでした

View オブジェクトを引数として dispatchTakePhotoIntent を呼び出しますが、コードでは次のように定義しています。

public void dispatchTakePhotoIntent(int actionCode) 

引数として整数を取ります。

コード内でメソッドを呼び出す方法に問題があります。

于 2012-07-27T21:45:32.240 に答える
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(int)を定義したため、コードで検出できなかったタイプdispatchTakePhotoIntent(View)のメソッドへの呼び出しを検出しました。

Eclipseで開発している場合は、コードでエラーが発生するはずです(エラーがある行の赤い十字)。

于 2012-07-27T22:38:04.550 に答える
0

ビュー クラス android.widget.Button の onClick ハンドラのアクティビティ クラス com.example.mydressingroom.MainActivity にメソッドdispatchTakePhotoIntent(View)が見つかりませんでした

メソッド属性で定義したように整数を送信する代わりに、ビューをメソッドに送信しているようです。

于 2012-07-27T21:49:05.660 に答える