Aplicación de Android, no hay tal método de excepción
-
12-12-2019 - |
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);
}
}
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.