2014-09-26 80 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