java.lang.IllegalStateException:在Android Studio中找不到按钮的onClick方法

我正在Android Studio中构建一个名为Ping的应用程序。 到目前为止,我的活动是LoginActivity ProfileActivity和Timeline。 我的问题是布局中对应于时间轴活动的按钮具有无效的onClick方法。 单击该按钮时,模拟器将显示“Unfortunatley,Ping已停止”。 我正在定义按钮和onClick方法,就像我对其function正常工作的其他按钮一样,只是这个按钮似乎不起作用。 我收到一条错误,说找不到该方法,但我已在相应的活动中编写了该方法。 这是logcat:

04-30 10:40:08.727 2075-2075/com.ping_social.www.ping E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.ping_social.www.ping, PID: 2075 java.lang.IllegalStateException: Could not find a method onProfilePress(View) in the activity class android.view.ContextThemeWrapper for onClick handler on view class android.widget.Button with id 'profileButton' at android.view.View$1.onClick(View.java:4007) at android.view.View.performClick(View.java:4780) at android.view.View$PerformClick.run(View.java:19866) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5257) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) Caused by: java.lang.NoSuchMethodException: onProfilePress [class android.view.View] at java.lang.Class.getMethod(Class.java:664) at java.lang.Class.getMethod(Class.java:643) at android.view.View$1.onClick(View.java:4000)             at android.view.View.performClick(View.java:4780)             at android.view.View$PerformClick.run(View.java:19866)             at android.os.Handler.handleCallback(Handler.java:739)             at android.os.Handler.dispatchMessage(Handler.java:95)             at android.os.Looper.loop(Looper.java:135)             at android.app.ActivityThread.main(ActivityThread.java:5257)             at java.lang.reflect.Method.invoke(Native Method)             at java.lang.reflect.Method.invoke(Method.java:372)             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

这是我的时间轴活动类:

 package com.ping_social.www.ping; import android.content.Intent; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; public class TimeLine extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_time_line); /*print log that shows we've got here*/ Log.i("LoginActivity", "Layout has been set"); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_time_line, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } /*called when user presses the Log in button*/ public void onProfilePress(View view){ /*Log the button press*/ Log.i("TimeLine", "Has reached the onProfilePress method"); Intent intent = new Intent(this, ProfileActivity.class); startActivity(intent); } } 

这是我的时间轴布局xml代码:

    

我非常肯定没有拼写问题,也没有其他按钮共享相同的ID或共享相同名称的方法。 被困在这几天,非常感谢任何帮助!

好的,所以我做了自己的测试。 我用一个按钮放了一个基本的相对布局,把android:theme="@style/AppTheme"放在里面,一个按钮 – 应用程序崩溃了同样的错误。 然后我删除了android:theme属性 – onclick事件被解雇了。

当我使用AppCompatActivity而不是现在弃用的ActionBarActivity时,发生了同样的事情。

我很难说为什么它不适用于android:theme 。 这是Lollipop的function之一,但我尝试在API 5.0模拟器上启动。 文章指出目前只有android.support.v7.widget.Toolbar支持此属性。