设置按钮onclick和listener

时间:2015-07-06 18:01:33

标签: android button onclicklistener buttonclick

我有一个使用gridlayout中的按钮创建的小键盘,我需要编辑EditText字段。现在这是我的代码:

MainActivity.java:

    Button b1;
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b1 = (Button) findViewById(R.id.b1);

    b1.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view) {
            //Do something
        }
    });

main.xml中:

     <Button
        android:id="@+id/b1"
        android:text="1"
        android:background="#ff3aaebb"
        android:textColor="#ffffffff" />

问题是我需要能够在EditText中获取文本并对其进行修改,而且我不知道创建一个侦听器和做一个案例或做android是否更容易:onClick = &#34;的MyMethod&#34 ;.如果你能解释差异/津贴,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在XML布局中分配方法通常是一个坏主意 - 难以跟踪,如果除了您之外的其他人尝试使用您的应用程序/部件,则难以跟踪。

对于在功能上共享相同点击次数的众多按钮,您可以将活动指定为点击侦听器

public class MainActivity extends Activity implements View.OnClickListener {
    @Override
    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);

        setContentView(R.layout.main);
        b1 = (Button) findViewById(R.id.b1);
        b1.setOnClickListener(this);
        b2 = (Button) findViewById(R.id.b2);
        b2.setOnClickListener(this);
        b3 = (Button) findViewById(R.id.b3);
        b3.setOnClickListener(this);
        ....
    }

    @Override
    public void onClick(View view) {
        // your logic for the edit text
        ...
        editText.setText("ADD YOUR CHANGED VALUE");
    }
}

如果您需要将不同按钮的点击逻辑分开,则需要逐个进行比较

@Override
public void onClick(View view) {
    if (b1.equals(view)) {
        // b1 was clicked
        ...
        editText.setText(b1.getText());
    }
    else if (b2.equals(view)) {
        // b2 was clicked
        ...
        editText.setText(b2.getText());
    }
    ...
}