簡體   English   中英

我的按鈕在MainActivity.java文件中找不到方法

[英]my button cannot find a method in the MainActivity.java file

嗨,我是一名嘗試制作基本計算器應用程序的初學者android開發人員

這是來自content_main.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"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:showIn="@layout/activity_main" tools:context=".MainActivity">

    <TextView
        android:id="@+id/displayer"
        android:text="Hello World!"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="113dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="-"
        android:id="@+id/minus"
        android:onClick="subtract"
        android:layout_centerVertical="true"
        android:layout_toLeftOf="@+id/displayer"
        android:layout_toStartOf="@+id/displayer"
        android:layout_marginRight="39dp"
        android:layout_marginEnd="39dp" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="add"
        android:text="+"
        android:id="@+id/plus"
        android:layout_below="@+id/minus"
        android:layout_alignLeft="@+id/minus"
        android:layout_alignStart="@+id/minus" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:onClick="setNumber"
        android:tag="1"
        android:id="@+id/one"
        android:layout_above="@+id/plus"
        android:layout_toRightOf="@+id/plus"
        android:layout_toEndOf="@+id/plus" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="4"
        android:id="@+id/four"
        android:tag="4"
        android:layout_alignTop="@+id/plus"
        android:layout_toRightOf="@+id/plus"
        android:layout_toEndOf="@+id/plus" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="2"
        android:id="@+id/two"
        android:tag="2"
        android:layout_above="@+id/four"
        android:layout_toRightOf="@+id/one"
        android:layout_toEndOf="@+id/one" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="3"
        android:tag="3"
        android:id="@+id/three"
        android:layout_above="@+id/five"
        android:layout_toRightOf="@+id/two"
        android:layout_toEndOf="@+id/two" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="5"
        android:tag="5"
        android:id="@+id/five"
        android:layout_below="@+id/two"
        android:layout_alignLeft="@+id/two"
        android:layout_alignStart="@+id/two" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="6"
        android:tag="6"
        android:id="@+id/six"
        android:layout_above="@+id/nine"
        android:layout_toRightOf="@+id/five"
        android:layout_toEndOf="@+id/five" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="7"
        android:tag="7"
        android:id="@+id/seven"
        android:layout_below="@+id/plus"
        android:layout_toRightOf="@+id/plus"
        android:layout_toEndOf="@+id/plus" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="8"
        android:tag="8"
        android:id="@+id/eight"
        android:layout_below="@+id/five"
        android:layout_alignLeft="@+id/five"
        android:layout_alignStart="@+id/five" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="setNumber"
        android:text="9"
        android:tag="9"
        android:id="@+id/nine"
        android:layout_below="@+id/five"
        android:layout_alignLeft="@+id/six"
        android:layout_alignStart="@+id/six" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="="
        android:id="@+id/equal"
        android:onClick="equal"
        android:layout_below="@+id/plus"
        android:layout_alignLeft="@+id/plus"
        android:layout_alignStart="@+id/plus" />

</RelativeLayout>

這是MainActivity文件夾中的我的活動:

package com.example.android.calculator;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

private int firstNumber = -1;
private int secondNumber = -1;
private int operation;

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

private void equal(View view){
    TextView displayerTextView=(TextView)
            findViewById(R.id.displayer);
    if (operation == 0) {
        displayerTextView.setText(firstNumber+secondNumber);
    }else if (operation == 1){
        displayerTextView.setText(firstNumber-secondNumber);
    }else{
        displayerTextView.setText("error");
    }
}

private void add(View view){
    operation = 0;
}

private void subtract(View view){
    operation = 1;
}

private void setNumber(View view){
    if (firstNumber == -1) {
        firstNumber = Integer.parseInt((String)view.getTag());
    }else{
        secondNumber = Integer.parseInt((String)view.getTag());
    }
}

}

當我在計算器應用程序中單擊3按鈕時,出現此錯誤,是此錯誤:

java.lang.IllegalStateException: Could not find a method setNumber(View) in       the activity class com.example.android.calculator.MainActivity for onClick handler on view class android.widget.Button with id 'three'

因為您的方法是private 改變public

您可以在這里找到更多信息http://developer.android.com/reference/android/widget/Button.html

它應該是public void setNumber(View view){

對於上述問題,請更改

private void setNumber(View view){
    if (firstNumber == -1) {
        firstNumber = Integer.parseInt((String)view.getTag());
    }else{
        secondNumber = Integer.parseInt((String)view.getTag());
    }
}

public void setNumber(View view){
    if (firstNumber == -1) {
        firstNumber = Integer.parseInt((String)view.getTag());
    }else{
        secondNumber = Integer.parseInt((String)view.getTag());
    }
}

為避免使用加法和減法在代碼中出現類似錯誤,請將這些功能也從private更改為public

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM