Android Activity:输入数字,按下按钮,从xml传递到class

Android Activity: Input number, press button, pass from the xml to the class

您好!
尝试向 EditText 字段输入一个数字,按 calc531 按钮并让该数字进入 inputDouble 变量。

xml:

<EditText
    android:inputType="numberDecimal"
    android:id="@+id/inputField"
    android:layout_below="@+id/title5"/>

<Button
    style="?android:attr/buttonStyleSmall"
    android:text="Calculate"
    android:id="@+id/calcBtn"
    android:onClick="inputField" />

java:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_five);

    View.OnClickListener calcButton = new View.OnClickListener() {
        public void onClick(View v) {
            textHold = (EditText) findViewById(R.id.inputField);
            stringHold = textHold.getText().toString();
            inputDouble = Double.parseDouble(stringHold);
        }
    };

logcat 错误:

java.lang.IllegalStateException: Could not find a method squat1RMinputField(View)
.........
Caused by: java.lang.NoSuchMethodException: inputField [class android.view.View]

任何帮助将不胜感激!

您已在 xml 文件中将方法名称指定为 inputField。您应该在 activity

中实施相同的方法

方法一

public void inputField (View v)
{
  textHold = (EditText) findViewById(R.id.inputField);
            stringHold = textHold.getText().toString();
            inputDouble = Double.parseDouble(stringHold);
}

删除 onclick 方法。

方法二

Button calcButton = (Button)findViewById(R.id.calcBtn);
calcButton.setOnClickListener(calcBtn);

其中 calcBtn 是您的 onClickListener,并从您的 xml 中删除 android:onClick="inputField" 行。

您的 xml 应该是:

<EditText
    android:inputType="numberDecimal"
    android:id="@+id/inputField"
    android:layout_below="@+id/title5"/>

<Button
    style="?android:attr/buttonStyleSmall"
    android:text="Calculate"
    android:id="@+id/calcBtn"
android:onClick="inputField" />

并且在您的 activity 中您应该编写您的方法 inputField(View v)

    public class MainActivity extends Activity{
      @Override
      protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_five);
      }

      //Your method to handle click
      public void inputField (View v){  
      textHold = (EditText) findViewById(R.id.inputField);
                stringHold = textHold.getText().toString();
                inputDouble = Double.parseDouble(stringHold);
      }
   }

您正在对同一个按钮调用 onClickListener 两次并且只执行一次。

如果您已经在具有 Button 的 xml 中定义了 android:onClick=""inputField"",您只需在 activity 中实现 inputField 方法。

public void inputField(View v){
    textHold = (EditText) findViewById(R.id.inputField);
    stringHold = textHold.getText().toString();
    inputDouble = Double.parseDouble(stringHold);
}

并从您的 onCreate() 方法中删除 View.OnClickListener calcButton...