Android按钮仅在第二次单击时起作用

时间:2014-04-28 05:43:01

标签: java android button

我正在开发我的第一个android Calculator应用程序。我遇到了一个缺陷。我添加了几个按钮,单击这些按钮,它会将相应的文本放在EditText字段上。主要问题如下所述,               在运行项目时,必须单击两次按钮才能将相应的文本首次放在EditText字段上。例如,Button1在点击时将{1}放在EditText字段上。在运行时,首先单击该按钮不执行任何操作。只有在第二次点击时,它才会在EditText字段上显示“1”。

守则如下,

XML按钮和EditField,

<EditText
        android:id="@+id/textView1"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:ellipsize="end"
        android:ems="10"
        android:gravity="right"
        android:hint="@string/textView1" />
 <Button
        android:id="@+id/button1"        
        android:layout_width="60dp"       
        android:layout_height="60dp"
        android:hint="@string/button1"
        android:onClick="set1" />

MainActivity.java

Button onClick的相应功能,

public void set1(View v){
    final Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new OnClickListener(){

            public void onClick(View v)
            {
                EditText tv = (EditText) findViewById(R.id.textView1);
                String text=tv.getText().toString();
                tv.setText(text+"1");
            }
    });

}

2 个答案:

答案 0 :(得分:7)

按如下方式更改set1()方法,

public void set1(View v)
{
    EditText tv = (EditText) findViewById(R.id.textView1);
    String text=tv.getText().toString();
    tv.setText(text+"1");
}

答案 1 :(得分:0)

如果您在xml中调用点击按钮的set1()方法,那么您不需要再次在该方法中找到按钮的ID。所以简直就是这样,

public void set1(View v)
{
  EditText tv = (EditText) findViewById(R.id.textView1);
  String text=tv.getText().toString();
  tv.setText(text+"1");
}

现在你的xml for按钮将是

android:onClick="set1"