Я уже пытался найти в 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
Я бы предложил вам использовать это в вашем onCreate
:
Button button = (Button) findViewById(R.id.your_btn_id);
button.setOnClickListener((view) -> { theMethodYouWantToCallHere(view); });
Пожалуйста, проверьте следующее, используя этот подход
AndroidManifest.xml
android
в файл XML в родительском контейнере файла макета. IE: xmlns:android="http://schemas.android.com/apk/res/android"
setContentView(R.layout.your_layout_file);
android
. IE: android:onClick="yourMethod"
onClick
имеет параметр View view
; Не больше, не меньшеonClick
является public
в действии.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();
}
}
Другой ответ не совсем правильный, так как он не запускает новое действие. Вот что вы могли бы использовать для программной установки onClick для запуска нового действия:
Button button = (Button) findViewById(R.id.your_btn_id);
button.setOnClickListener((view) -> {
MainActivity.this.startActivity(new Intent(MainActivity.this, AddItemActivity.class));
});