как решить ошибку при удалении «view» в методе onClick? - PullRequest
0 голосов
/ 30 января 2019

поэтому я устанавливаю имя метода при нажатии кнопки следующим образом:

enter image description here

и в классе активности, который я устанавливаю loginButtonTapped методкак это:

class LoginActivity : AppCompatActivity(), View.OnTouchListener  {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

    }

    fun loginButtonTapped(view: View) {

    }

}

и на вкладке сборки у меня предупреждение, сказано, что представление параметров никогда не используется:

enter image description here

да, я никогда не использовал представление arg для этого loginButtonTapped

, а затем я пытаюсь удалить этот параметр, чтобы он был fun loginButtonTapped() {}

, но это еще хуже, я получаю сбой, когда язапустите приложение:

Процесс: com.xxxx.lakuinkotlin, PID: 10922 java.lang.IllegalStateException: Не удалось найти метод loginButtonTapped (View) в родительском или родительском контексте для атрибута android: определен onClickв классе представления android.support.v7.widget.AppCompatButton с идентификатором 'login_button_loginActivity'

так, как избежать того, что «представление параметров никогда не используется», а также без сбоев?что здесь пошло не так?

1 Ответ

0 голосов
/ 30 января 2019

Это способ взаимодействия XML и Java-кода в Android.
Вы должны иметь представление в качестве параметра функции, чтобы иметь экземпляр щелкающего представления.

Вы можете попробовать один изследующее:

  • Игнорировать проверку ворса, подавив (нажмите желтую лампочку).
  • Использовать .setOnClickListener() метод просмотра и передать функцию без параметров в реализации Listener onClick(View).
TextView t;
t.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
         onClickTextData(); // No param
     }
});
//All arguments to the listener method are optional.

@OnClick(R.id.submit)
public void submit() {
  // TODO submits data to server...
}

Поскольку метод вызывается без получения Button в onCreate.И чтобы получить доступ к этой кнопке, вам нужно иметь представление.Поэтому, чтобы избежать сбоя, вы должны добавить экземпляр метода View к методу.

Как видите, в тексте ошибки есть Could not find method loginButtonTapped(View).Это означает, что для реализации onClick требуется функция с view в качестве параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...