2017-10-04 117 views
1

我得到的logcat的这些错误:致命异常:java.lang.IllegalStateException:无法为Android execute方法:的onClick

FATAL EXCEPTION: main Process: com.sreekanth.gifapp, PID: 14761 
java.lang.IllegalStateException: Could not execute method for android:onClick 

我试图改变方法的名字,但没有奏效。这里是我的代码:

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    > 

    <Button 
     android:id="@+id/btngif" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="133dp" 
     android:layout_marginStart="133dp" 
     android:layout_marginTop="37dp" 
     android:text="capture gif" 
     android:onClick="vMethod"/> 
</RelativeLayout> 

活动:

public class MainActivity extends Activity { 

     private final int VIDEO_REQUEST_CODE =100; 

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

     public void vMethod (View view) { 
      Intent camera_intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE); 
      File video_fileq = getFilepath(); 
      Uri video_uri = Uri.fromFile(video_fileq); 
      camera_intent.putExtra(MediaStore.EXTRA_OUTPUT,video_uri); 
      Intent intent = camera_intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1); 
      startActivityForResult(camera_intent,VIDEO_REQUEST_CODE); 
     } 

     @Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

      if(requestCode == VIDEO_REQUEST_CODE) { 
       if(requestCode == RESULT_OK) { 
        Toast.makeText(getApplicationContext(),"video captured successufully",Toast.LENGTH_SHORT).show(); 
       } else { 
        Toast.makeText(getApplicationContext(),"video capture failed...",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 

     public File getFilepath() { 
      File folder = new File("sdcard/video_captured"); 

      if (!folder.exists()) { 
       folder.mkdir(); 
      } 

      File video_file = new File(folder,"sample_video.mp4"); 
      return video_file; 
     } 
    } 

这里是这个app.Please的全logcat的去通过量,我提供的logcat的。这些是我面临的错误。我试图更改方法名称,但它不起作用。

FATAL EXCEPTION: main 
                      Process: com.sreekanth.gifapp, PID: 23875 
                      java.lang.IllegalStateException: Could not execute method for android:onClick 
                       at android.view.View$DeclaredOnClickListener.onClick(View.java:4697) 
                       at android.view.View.performClick(View.java:5609) 
                       at android.view.View$PerformClick.run(View.java:22263) 
                       at android.os.Handler.handleCallback(Handler.java:751) 
                       at android.os.Handler.dispatchMessage(Handler.java:95) 
                       at android.os.Looper.loop(Looper.java:154) 
                       at android.app.ActivityThread.main(ActivityThread.java:6077) 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865) 
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 
                      Caused by: java.lang.reflect.InvocationTargetException 
                       at java.lang.reflect.Method.invoke(Native Method) 
                       at android.view.View$DeclaredOnClickListener.onClick(View.java:4692) 
                       at android.view.View.performClick(View.java:5609)  
                       at android.view.View$PerformClick.run(View.java:22263)  
                       at android.os.Handler.handleCallback(Handler.java:751)  
                       at android.os.Handler.dispatchMessage(Handler.java:95)  
                       at android.os.Looper.loop(Looper.java:154)  
                       at android.app.ActivityThread.main(ActivityThread.java:6077)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
                      Caused by: android.os.FileUriExposedException: file:///sdcard/video_captured/sample_video.mp4 exposed beyond app through ClipData.Item.getUri() 
                       at android.os.StrictMode.onFileUriExposed(StrictMode.java:1826) 
                       at android.net.Uri.checkFileUriExposed(Uri.java:2346) 
                       at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832) 
                       at android.content.Intent.prepareToLeaveProcess(Intent.java:8964) 
                       at android.content.Intent.prepareToLeaveProcess(Intent.java:8949) 
                       at android.app.Instrumentation.execStartActivity(Instrumentation.java:1519) 
                       at android.app.Activity.startActivityForResult(Activity.java:4265) 
                       at android.app.Activity.startActivityForResult(Activity.java:4224) 
                       at com.sreekanth.gifapp.MainActivity.vMethod(MainActivity.java:37) 
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at android.view.View$DeclaredOnClickListener.onClick(View.java:4692)  
                       at android.view.View.performClick(View.java:5609)  
                       at android.view.View$PerformClick.run(View.java:22263)  
                       at android.os.Handler.handleCallback(Handler.java:751)  
                       at android.os.Handler.dispatchMessage(Handler.java:95)  
                       at android.os.Looper.loop(Looper.java:154)  
                       at android.app.ActivityThread.main(ActivityThread.java:6077)  
                       at java.lang.reflect.Method.invoke(Native Method)  
                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  
                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  
+0

你能发布完整的LogCat这个错误吗? –

+0

是的,我已经发布了完整的错误信息,PLZ看看它 –

回答

-1

为什么不尝试其他方式......

声明一个按钮对象:

Button button_gif; 

得到XML您的按钮资源在的onCreate

button_gif = (Button) findViewById(R.id.btngif); 

和onClickListener实施界面在你的活动,所以,你已经覆盖的onClick方法:

@Override 
public void onClick(View v) { 
//Do needful on button press 
} 
+0

对不起,但这个答案是不正确的,并没有帮助解决问题 –

+0

@Dima Kozhevin最近我做了什么错误? –

+0

您可以使用2个功能来设置OnClickListener:1),正如您在问题中所做的一样(以XML格式),正如本答案(在代码中)2)中所建议的那样。你的情况不是一个错误。 –

相关问题