Как узнать, какой кнопке соответствует этот метод?

Я новичок в 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?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

В вашем файле 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);
     }
});
Ответ принят как подходящий

В XML добавьте этот атрибут "android: onClick =" $ {methodName} "в элемент Button.

ИЛИ ЖЕ:

Вы можете создать объект кнопки и ссылку на пользовательский интерфейс.

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);
}

}

Другие вопросы по теме