我怎么知道这个方法对应哪个按钮?

时间:2018-05-20 06:54:17

标签: java android

我是Android Studio的新手,我一直在查看官方教程,并找到了这段代码:

public class MainActivity extends AppCompatActivity {
    public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    /** Called when the user taps the Send button */
    public void sendMessage(View view) {
        Intent intent = new Intent(this, DisplayMessageActivity.class);
        EditText editText = (EditText) findViewById(R.id.editText);
        String message = editText.getText().toString();
        intent.putExtra(EXTRA_MESSAGE, message);
        startActivity(intent);
    }
}

但是,我不知道sendMessage()方法是如何与我们在教程中创建的按钮相关联的。哪一行提到此方法对应于按钮,该按钮的名称为button_send,值为Send

2 个答案:

答案 0 :(得分:3)

在您的layout文件android:onClick="sendMessage"属性中,您应该在点击时调用此函数。

您不需要自己将按钮链接到此方法,android:onClick属性会为您执行此操作。如果您想自己将该按钮链接到此功能,则必须使用id为该按钮添加android:id="@+id/button_send",然后以这种方式链接:

Button send = (Button) findViewById(R.id.button_send);
send.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
           sendMessage(v);
     }
});

答案 1 :(得分:1)

在XML中添加此属性" android:onClick =" $ {methodName}"在Button元素中。

OR:

您可以创建按钮对象并参考UI。

public class MainActivity extends AppCompatActivity {
public static final String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // Refference UI
    Button button = findViewById(R.id.button);
    button.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            sendMessage(view);
        }
    });

}

/** Called when the user taps the Send button */
public void sendMessage(View view) {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
    EditText editText = (EditText) findViewById(R.id.editText);
    String message = editText.getText().toString();
    intent.putExtra(EXTRA_MESSAGE, message);
    startActivity(intent);
}

}