#java #android #android-button
#java #Android #android-кнопка
Вопрос:
Такая же проблема. Кнопка инициализируется в нужное время, но по какой-то причине она вылетает при нажатии. В XML-файле указано, что обработчик onClick пропускает соответствующую активность.
xml
<Button
android:id="@ id/start_reg_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="216dp"
android:onClick="onClick"
android:text="@string/need_a_new_account" />
Java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
mRegBtn = (Button) findViewById(R.id.start_reg_btn);
mRegBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent reg_intent = new Intent(StartActivity.this, RegisterActivity.class);
startActivity(reg_intent);
}
});
}
Очень новый для программирования на Android. Любая помощь приветствуется
Комментарии:
1. убедитесь, что в XML-файле R.layout.activity.start есть эта кнопка.
2. Это делает xml-код, который я опубликовал, из acitvity_start.xml файл
3. может быть из-за android: onClick=»onClick», и вы не создали этот метод в своей деятельности, поэтому попробуйте после удаления этой строки.
Ответ №1:
Существует два способа решения вашей проблемы:
- Когда вы объявляете обработчик onClick в своем XML, вам необходимо реализовать метод в своей деятельности.
В вашем случае вы объявили обработчик onClick для вашей кнопки в XML с помощью этой строки:
android:onClick="onClick"
Итак, теперь вам нужно создать имя метода onClick() в вашем activity и выполнить там свой код следующим образом:
public void onClick(View v) {
Intent reg_intent = new Intent( StartActivity.this, RegisterActivity.class);
startActivity(reg_intent);
}
- Удалите эту строку из вашего XML:
android:onClick="onClick"
и сделайте то, что вы уже сделали:
mRegBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent reg_intent = new Intent( StartActivity.this, RegisterActivity.class);
startActivity(reg_intent);
}
});
Итак, основная концепция заключается в том, что вы не можете использовать android:onClick
and setOnClickListener
вместе. Вы должны использовать по одному за раз.
Комментарии:
1. Я удалил атрибут android: onClick =»onClick» из кнопки в файле xml, но он по-прежнему выходит из строя при нажатии
Ответ №2:
android:onClick and `setOnClickListener` can not used simultaneous.
Чтобы правильно использовать android: onClick, вы можете обратиться к официальной ссылке
Ответ №3:
Попробуйте получить текущий контекст с помощью getContext()
и реализовать как.
public void onClick(View v) {
Intent reg_intent = new Intent(v.getContext(), RegisterActivity.class);
v.getContext().startActivity(reg_intent);
}
И либо определите onClick
из XML-файла, либо определите его программно с помощью View.setOnClickListener
. Оба не могут сосуществовать.
Комментарии:
1. удален android: onClick=»onClick», чтобы они не сосуществовали, но он все равно вылетает при нажатии. Я перестраиваю перед запуском, и он все равно выходит из строя при нажатии этой кнопки
Ответ №4:
Обнаружена ошибка, связанная с тем, что TextEditinput != TextInputLayout и именно поэтому он зависал. Он также работал либо с помощью метода onClick, либо с помощью SetuponClickListener, поэтому спасибо всем за их помощь