Действия в андроид студии не переключаются после нажатия кнопки

1

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

Я ввел onClick имя метода для кнопки

это выглядит так: https://i.imgur.com/pmsztaL.png (пока не могу опубликовать изображения)

и это мой файл MainActivity.class с указанным методом

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void handleButtonAddNew(View view) {
        MainActivity.this.startActivity(new Intent(MainActivity.this, AddItemActivity.class));
    }
}

После нажатия кнопки в телефоне кнопка ничего не делает.

Это мой AddItemActivity.class

public class AddItemActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_item);
    }


    public void handleButtonRemember(View view) {
        finish();
    }
}

Почему кнопка не работает, что я сделал не так?

редактирует

РЕДАКТИРОВАТЬ: Успешно запустил эмулятор, и кнопки фактически работали, проблема лежит в моем телефоне, кнопки там не хотят работать. Где может быть проблема сейчас?

РЕДАКТИРОВАТЬ: XML-макет MainActivity.class

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/buttonAddNew"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="188dp"
        android:layout_marginRight="188dp"
        android:layout_marginBottom="264dp"
        android:text="@string/buttonAdd"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent" />

    <ScrollView
        android:id="@+id/scrollView2"
        android:layout_width="395dp"
        android:layout_height="715dp"
        android:layout_marginStart="8dp"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginRight="8dp"
        android:layout_marginBottom="8dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" />
    </ScrollView>

</android.support.constraint.ConstraintLayout>

РЕДАКТИРОВАТЬ: проблема была с представлением прокрутки, блокирующим нажимаемую кнопку, поэтому на моем телефоне кнопка не регистрировала никаких нажатий, после удаления просмотра прокрутки кнопка работает нормально.

Теги:
android-studio
javafx

2 ответа

0
Лучший ответ

Боюсь, что эта кнопка не привязывает слушателей.

Программный подход

Из официальной документации Android

Я бы предложил вам использовать это в вашем onCreate:

Button button = (Button) findViewById(R.id.your_btn_id);
button.setOnClickListener((view) -> { theMethodYouWantToCallHere(view); });

XML подход

Пожалуйста, проверьте следующее, используя этот подход

  1. Ваша деятельность зарегистрирована в AndroidManifest.xml
  2. Вы включаете пространство имен android в файл XML в родительском контейнере файла макета. IE: xmlns:android="http://schemas.android.com/apk/res/android"
  3. Убедитесь, что вы устанавливаете представление содержимого для действия с помощью setContentView(R.layout.your_layout_file);
  4. Как только 2 удовлетворен, убедитесь, что вы используете пространство имен android. IE: android:onClick="yourMethod"
  5. Как вы сейчас делаете: убедитесь, что метод обратного вызова onClick имеет параметр View view; Не больше, не меньше
  6. Убедитесь, что функция onClick является public в действии.
  7. И что никакие другие интерактивные представления не покрывают представление, для которого вы регистрируете прослушиватель onClick :) Включая пространство имен: xmlns:android="http://schemas.android.com/apk/res/android"

XML файл

<FrameLayout
            xmlns:android="http://schemas.android.com/apk/res/android"
            xmlns:app="http://schemas.android.com/apk/res-auto"
            android:fitsSystemWindows="true"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
        <Button android:text="Click me!"  android:onClick="clicked" android:layout_height="wrap_content" android:layout_width="wrap_content"/>

</FrameLayout>

Активность

public class MainActivity extends AppCompatActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void clicked(View view){
        Toast.makeText(this, "Hey! Im clicked!",Toast.LENGTH_SHORT).show();
    }

}
  • 0
    Пробовал программный подход, эмулятор работает как надо, активность переключается, однако мой телефон не регистрирует щелчки. Он даже не показывает анимацию нажатия кнопки, когда я нажимаю кнопку пальцем.
  • 0
    Можете ли вы опубликовать код макета XML?
Показать ещё 6 комментариев
0

Другой ответ не совсем правильный, так как он не запускает новое действие. Вот что вы могли бы использовать для программной установки onClick для запуска нового действия:

Button button = (Button) findViewById(R.id.your_btn_id);
button.setOnClickListener((view) -> { 
    MainActivity.this.startActivity(new Intent(MainActivity.this, AddItemActivity.class)); 
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню