2016-09-15 372 views
1

这是我的第一个问题在stackoverflow,所以请帮助我,如果我做任何错误/不当。ANDROID意外致命错误! java.lang.IllegalStateException:无法执行android的方法:onClick

我试图创建一个基本的练习应用程序,以使用隐式意图从activity1调用activity(activity2)。但由于某些原因,我有这样的错误我发疯:

java.lang.IllegalStateException: Could not execute method for android:onClick. 

下面是活动1中的代码:

public class FirstActivity extends Activity { 
private final String CLASS_NAME = "FirstActiviy"; 
private int request_Code = 1; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.firstactivity); 
    Log.d(CLASS_NAME, "onCreate invoked!"); 
} 

public void onStart(){ 
    super.onStart(); 
    Log.d(CLASS_NAME, "onStart invoked!"); 
} 

public void onPause(){ 
    super.onPause(); 
    Log.d(CLASS_NAME, "onPause invoked!!"); 
} 

public void onResume(){ 
    super.onResume(); 
    Log.d(CLASS_NAME, "onResume invoked!!"); 
} 

public void onStop(){ 
    super.onStop(); 
    Log.d(CLASS_NAME, "onStop invoked!!!"); 
} 

public void onDestroy(){ 
    super.onDestroy(); 
    Log.d(CLASS_NAME, "onDestroy INVOKED!!!"); 
} 

public void onRestart(){ 
    super.onRestart(); 
    Log.d(CLASS_NAME, "onRestart invoked!!"); 
} 


// event handler for the button (activity 2) 
public void onClick(View view) { 

    startActivity(new Intent("com.seneca.lab2b.abbas")); 

} 

// event handler for a button (activity 3) 
public void onClick3(View view) { 

    startActivity(new Intent(this, ThirdActivity.class)); 

} 
} 

以下是错误日志:

09-15 01:45:42.070 10359-10359/com.seneca.lab2b E/AndroidRuntime: FATAL EXCEPTION: main 
                    Process: com.seneca.lab2b, PID: 10359 
                    java.lang.IllegalStateException: Could not execute method for android:onClick 
                     at android.view.View$DeclaredOnClickListener.onClick(View.java:4452) 
                     at android.view.View.performClick(View.java:5198) 
                     at android.view.View$PerformClick.run(View.java:21147) 
                     at android.os.Handler.handleCallback(Handler.java:739) 
                     at android.os.Handler.dispatchMessage(Handler.java:95) 
                     at android.os.Looper.loop(Looper.java:148) 
                     at android.app.ActivityThread.main(ActivityThread.java:5417) 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
                    Caused by: java.lang.reflect.InvocationTargetException 
                     at java.lang.reflect.Method.invoke(Native Method) 
                     at android.view.View$DeclaredOnClickListener.onClick(View.java:4447) 
                     at android.view.View.performClick(View.java:5198)  
                     at android.view.View$PerformClick.run(View.java:21147)  
                     at android.os.Handler.handleCallback(Handler.java:739)  
                     at android.os.Handler.dispatchMessage(Handler.java:95)  
                     at android.os.Looper.loop(Looper.java:148)  
                     at android.app.ActivityThread.main(ActivityThread.java:5417)  
                     at java.lang.reflect.Method.invoke(Native Method)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
                    Caused by: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.seneca.lab2b.abbas } 
                     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1798) 
                     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512) 
                     at android.app.Activity.startActivityForResult(Activity.java:3917) 
                     at android.app.Activity.startActivityForResult(Activity.java:3877) 
                     at android.app.Activity.startActivity(Activity.java:4200) 
                     at android.app.Activity.startActivity(Activity.java:4168) 
                     at com.seneca.lab2b.FirstActivity.onClick(FirstActivity.java:59) 
                     at java.lang.reflect.Method.invoke(Native Method)  
                     at android.view.View$DeclaredOnClickListener.onClick(View.java:4447)  
                     at android.view.View.performClick(View.java:5198)  
                     at android.view.View$PerformClick.run(View.java:21147)  
                     at android.os.Handler.handleCallback(Handler.java:739)  
                     at android.os.Handler.dispatchMessage(Handler.java:95)  
                     at android.os.Looper.loop(Looper.java:148)  
                     at android.app.ActivityThread.main(ActivityThread.java:5417)  
                     at java.lang.reflect.Method.invoke(Native Method)  
                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  

而且布局XML file:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/display" 
    android:textSize="20sp" 
    android:onClick="onClick"/> 

<Button 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/display3" 
    android:textSize="20sp" 
    android:onClick="onClick3"/> 
</LinearLayout> 
+0

你确定这是C++吗?看起来很像Java ;-)你可以发布FirstActivity的布局xml吗? – 0X0nosugar

+0

发布你的'firstactivity'布局 –

+0

OMG,我很抱歉,这确实是java,我正在同时在C++项目和java项目上工作,所以有点困惑。当然,我现在也会发布xml。 –

回答

0

In so我的设备xml onclick方法不工作,因为新版本的android它不支持onclick(视图)。 所以在xml中删除并在JAVA类中创建onclick。

+0

您能帮助我如何做到这一点,如果您可以提供帮助,会非常感激.Btw,onClick适用于Activity3按钮(显式用途) –

+0

首先从xml代码 –

+0

中删除android:onClick =“onClick”这一行,然后给你的Button的findviewbyid,然后在onCreate中为此按钮执行setonclick方法。 –

0

你的XML这样的:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<Button 
android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/display" 
    android:textSize="20sp"/> 

<Button 
android:id="@+id/button2" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/display3" 
    android:textSize="20sp"/> 
</LinearLayout> 

您的Java类:

public class FirstActivity extends Activity { 
private final String CLASS_NAME = "FirstActiviy"; 
private int request_Code = 1; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.firstactivity); 
    Log.d(CLASS_NAME, "onCreate invoked!"); 
    b1 = (Button) findViewById(R.id.button1); 
    b2 = (Button) findViewById(R.id.button2); 
    b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      startActivity(newIntent(FirstActivity.this,ThirdActivity.class)); 
      } 
     }); 

b2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

      startActivity(newIntent(FirstActivity.this,ThirdActivity.class)); 
      } 
     }); 
} 

public void onStart(){ 
    super.onStart(); 
    Log.d(CLASS_NAME, "onStart invoked!"); 
} 

public void onPause(){ 
    super.onPause(); 
    Log.d(CLASS_NAME, "onPause invoked!!"); 
} 

public void onResume(){ 
    super.onResume(); 
    Log.d(CLASS_NAME, "onResume invoked!!"); 
} 

public void onStop(){ 
    super.onStop(); 
    Log.d(CLASS_NAME, "onStop invoked!!!"); 
} 

public void onDestroy(){ 
    super.onDestroy(); 
    Log.d(CLASS_NAME, "onDestroy INVOKED!!!"); 
} 

public void onRestart(){ 
    super.onRestart(); 
    Log.d(CLASS_NAME, "onRestart invoked!!"); 
} 
} 
1

非常感谢这一点,但正如我在最初的问题陈述我想是这样的:“事件处理程序应该使用隐含的意图从FirstActivity调用SecondActivity类。意图过滤器使用的动作名称 应该是“com.seneca.lab2b .. ”

相关问题