我是Android编程新手,所以请原谅这个问题看起来很愚蠢。
我在Android中创建一个计算器,对于用户界面,我有很多按钮(大约20个,10个数字,以及各种操作)。现在有一个字符串表达式,一旦用户按下按钮" ="我就会计算出来。但是,如果他按下任何其他按钮,则输入会更新。说他按下" 1"然后输入= 1;然后他按2然后输入变为" 12"等等。 所以每当按下各种按钮时我都需要调用相同的功能,但功能的输入是不同的。 我可以通过制作n个不同的功能,每个按钮一个,但不是很可扩展。 那我怎么能去做呢?
当前的xml文件是:
<Button
android:id="@+id/Button01"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Button03"
android:layout_alignBottom="@+id/Button03"
android:layout_toRightOf="@+id/Button03"
android:onClick="UpdateExpression_/"
android:text="/" />
<Button
android:id="@+id/Button02"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/Button01"
android:layout_alignBottom="@+id/Button01"
android:layout_toRightOf="@+id/Button01"
android:onClick="UpdateExpression_X"
android:text="x" />
我需要更新到android:onClick =&#34; UpdateExpression&#34;并提到这个函数调用的一些输入。
谢谢。
答案 0 :(得分:1)
你需要一个集中的onClick方法,我们称之为updateExpression(View v)
还有一个关于你的代码的注释:方法名称应该以小写字母开头,这是一个Java命名约定。
android:onClick="updateExpression"
现在实施:
public void updateExpression (View v)
{
switch (v.getId())
{
case R.id.button1:
//do stuff here
break;
case R.id.button2:
//do other stuff here
break;
}
}
您需要v.getId()
的原因是因为您正在检查按钮的ID,然后执行某些操作(如果是特定ID)。需要此逻辑,因为所有按钮都将实现相同的方法。
答案 1 :(得分:0)
以下是使用代码的实现....
在onClick功能中,将v.getId()
与每个Android版面ID进行比较,例如R.id.button1
R.id.button2
等...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Here are some buttons defined in the XML layout as button1, button2, etc...
Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(myListener);
Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(myListener);
Button button3 = (Button)findViewById(R.id.button3);
button3.setOnClickListener(myListener);
}
//Create an anonymous implementation of OnClickListener
private OnClickListener myListener = new OnClickListener() {
public void onClick(View v) {
Log.d(logtag,"onClick() called");
Toast.makeText(MainActivity.this, "The " + v.getId() + " button was clicked.", Toast.LENGTH_SHORT).show();
}
};