Android 设置按钮onclick和listener

Android 设置按钮onclick和listener,android,button,onclicklistener,buttonclick,Android,Button,Onclicklistener,Buttonclick,我使用gridlayout中的按钮创建了一个numpad,我需要编辑一个EditText字段。下面是我的代码: MainActivity.java: Button b1; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b1 = (Button) findViewById(

我使用gridlayout中的按钮创建了一个numpad,我需要编辑一个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=“mymethod”更容易。如果您能解释这些差异/优势,我将不胜感激。

在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());
    }
    ...
}

我得到的类或接口预期的扩展等!答案已更新。对于您的活动,只需附加
实现视图。OnClickListener
谢谢!但什么是应用程序活动?它说它应该在名为ApplicationActivity.java.Answer的文件中声明。由于您正在使用
MainActivity
,答案代码已更改。非常感谢,但仍有一部分没有回答,EditText呢?