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...
。
您好!
尝试向 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...
。