2014-09-26 30 views
0

我对此很新。我的按钮没有响应点击。我将android:onClick =“onClick”添加到xml文件中。现在我得到下面的错误。onClick错误 - Android

java.lang.IllegalStateException: Could not find a method onClick(View) in the activity class testapp.two.MainActivity for onClick handler on view class android.widget.Button with id 'buttonMinus' 

请帮忙,java代码以及清单文件和主要的xml包含在下面。

谢谢。

package testapp.two; 

import testapp.two.R; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.TextView; 


public class MainActivity extends Activity implements OnClickListener{ 
    Button okButton, minusButton, plusButton; 
    TextView textScore, scoreCard; 
    int score = 95; 
    private static final String TAG = "GolfScore"; 

    /** Called when the activity is first created. */ 

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

     Log.d(TAG, "onCreate started"); 

    okButton = (Button)findViewById(R.id.buttonOK); 
    minusButton = (Button)findViewById(R.id.buttonMinus); 
    plusButton = (Button)findViewById(R.id.buttonPlus); 
    textScore = (TextView)findViewById(R.id.textScore); 
    scoreCard = (TextView)findViewById(R.id.scoreCard); 


    //set button listeners 
    okButton.setOnClickListener(this); 
    minusButton.setOnClickListener(this); 
    plusButton.setOnClickListener(this); 

    textScore.setText(String.valueOf(score)); 


    Log.d(TAG, "onCreate finished"); 
    }//onCreate 

@Override 
    public void onClick(View v) { 


     Log.d(TAG, "in onCreate"); 

     switch (v.getId()){ 
     case R.id.buttonMinus: 
      score--; 
      textScore.setText(String.valueOf(score)); 
      break; 
     case R.id.buttonPlus: 
      score++; 
      textScore.setText(String.valueOf(score)); 
      break; 

     case R.id.buttonOK: 


      break; 
     }//end of switch 

    }//end of my onclick 


}//end of MainActivity 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:onClick="@+id/buttonMinus, @+id/buttonPlus, @+id/textScore" 
    tools:context="${relativePackage}.${activityClass}" > 

    <TextView 
     android:id="@+id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="false" 
     android:layout_centerVertical="false" 
     android:text="Golf Score App" 
     android:textAlignment="center" /> 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentRight="true" 
     android:layout_below="@+id/title" 
     android:layout_marginTop="14dp" 
     android:baselineAligned="false" 
     android:gravity="fill" 
     android:orientation="horizontal" > 

     <Button 
      android:id="@+id/buttonMinus" 
      style="?android:attr/buttonStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="fill" 
      android:layout_marginLeft="5dp" 
      android:clickable="true" 
      android:onClick="onClick" 
      android:layout_marginTop="0dp" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:text="-" /> 

     <Button 
      android:id="@+id/buttonPlus" 
      style="?android:attr/buttonStyleSmall" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="fill" 
      android:layout_marginLeft="0dp" 
      android:clickable="true" 
      android:onClick="onClick" 
      android:layout_weight="1" 
      android:text="+" /> 

     <TextView 
      android:id="@+id/textScore" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="fill" 
      android:layout_marginTop="5dp" 
      android:layout_weight="1" 
      android:gravity="center_horizontal" 
      android:text="92" 
      android:textSize="20sp" /> 

     <Button 
      android:id="@+id/buttonOK" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="fill" 
      android:layout_marginLeft="0dp" 
      android:layout_marginRight="33dp" 
      android:clickable="true" 
      android:onClick="onClick" 
      android:layout_weight="1" 
      android:text="Ok" 
      android:textSize="15sp" /> 

    </LinearLayout> 

    <TextView 
     android:id="@+id/scoreCard" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_below="@+id/LinearLayout1" 
     android:layout_marginTop="22dp" 
     android:text="Score card info goes here" /> 

</RelativeLayout> 
+2

我不是100%肯定的,但我认为当你在xml中使用'android:onClick =“onClick”'时,你不必在'MainActivity'中实现'onClickListener' – 0xDEADC0DE 2014-09-26 22:22:38

回答

1

由于0xDEADC0DE说,如果您使用的onClick在你的XML属性,反之亦然,你不需要OnClickListener。

onClick(View v)方法无法找到的原因是Override注释。这取决于OnClickListener这种方式。没有需要注释的“免费”方法,如果使用onClick标签,可以找到该方法。

现在你有两种选择:摆脱OnClicklistener和关联到你的XML中的按钮或onClick。

编辑:

取下的RelativeLayout在XML的onClick属性和按钮。另外,从您的按钮中删除clickable。如果您设置了clickable = true,View将自动获得一个空的OnClickListener。这意味着您的活动中的您的OnClickListener将不会被调用。

+0

我以前没有在我的XML中有onClick。但是当我点击按钮时没有发生任何事情。 – fredo124 2014-09-26 22:35:53

+0

@ fredo124看看我的编辑。 – 2014-09-27 08:12:15

+0

谢谢史蒂夫,你说了什么?错误消失了,但是当我点击按钮时没有任何反应。 – fredo124 2014-09-27 20:57:14

0

只需从您的XML中删除android:onClick="onClick"即可。

请注意,最好为每个按钮制作一个单独的OnClickListener,而不是一个大的OnClickListener必须检查id以决定要做什么。

+2

呃,第二部分完全是意见。我更喜欢使用开关的单个onClick方法。 – Coeffect 2014-09-26 22:52:58

+0

@Coeffect我从XML中删除了'onClick'语句,但我的按钮仍然不响应点击。任何帮助表示赞赏。 – fredo124 2014-09-29 23:59:04

+0

@ fredo124请使用您的修订代码发布一个新问题。还要描述您在运行应用程序时所遵循的确切步骤以及发生的情况。然后告诉我们你希望**发生什么。 – 2014-09-30 00:37:39