Pregunta

Estoy tratando de crear una aplicación de Android que implica presionar un botón que toma una foto.Mi código está limpio sin advertencias o errores, pero cuando lo ejecuto en el emulador, y tan pronto como presiono el botón de la foto en la aplicación, dice que su aplicación se ha detenido. Cuando revise el archivo de registro para la explicación.yo el siguiente

Cualquier ayuda sería apreciada.Gracias de antemano.

    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

Aquí está mi código

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);
    }

}

¿Fue útil?

Solución

Crear una constante en la clase que llama al método

  private static final int TAKE_PHOTO_REQUEST = 100;

y llame al método como

  dispatchTakePhotoIntent(TAKE_PHOTO_REQUEST);

y dentro de su prueba de método para el código de solicitud:

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

Y el problema es que está llamando al método pasándole la vista en la que se está presentando / mostrando la imagen en lugar de la acción que desea llevar.Por lo que el compilador encontró una llamada al método de tipo DispatchtakePokePointent (View) que no se pudo encontrar en su código, ya que ha definido Dispatchtakephotooverent (int) .

Si está desarrollando en Eclipse, debe recibir un error en su código (una Cruz Roja en la línea donde está el error).

Otros consejos

El error dice: No se pudo encontrar un método DispatchTakePokeTent ( Ver )

Le llamando DispatchTakePothotoOntent con un objeto Ver como un argumento para él, mientras que en su código ha definido:

public void dispatchTakePhotoIntent(int actionCode) 

que toma un entero como un argumento.

Hay un problema en la forma en que está llamando a su método dentro de su código.

No se pudo encontrar un método DespachoTakePokePointent (Ver) en la clase de actividad com.example.mydressingroom.Mainactividad para OnClick Handler en la clase Android.widget.button

Parece que podría estar enviando una vista al método, en lugar de enviar un entero como lo ha definido en el atributo del método.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top