Я создаю приложение, используя Android Studio, где вы можете прослушать скачанные файлы musi c и загрузить файлы musi c в облако. В настоящее время я пытаюсь сделать кнопку для добавления плейлиста. Вот фрагмент дома, в котором расположена кнопка добавления:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Home Fragment"
android:textSize="30sp" />
<ImageButton
android:id="@+id/new_playlist"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentEnd="true"
android:layout_alignParentBottom="true"
android:layout_marginEnd="32dp"
android:layout_marginBottom="32dp"
android:background="@drawable/shadow"
android:elevation="10dp"
android:src="@drawable/ic_new" />
</RelativeLayout>
Как видно выше, кнопка является значком ImageButton. Вот код для добавления события onClick:
@Override
protected void onStart() {
super.onStart();
ImageButton imgBtn = findViewById(R.id.new_playlist);
imgBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new NewPlaylistFragment()).commit();
}
});
}
Это прекрасно работает, отображая NewPlaylistFragment. Проблема в том, когда я использую меню навигации и нажимаю на домашний фрагмент. При попытке нажать кнопку нового плейлиста во второй раз, ничего не происходит. При замене фрагмента простым сообщением Toast он срабатывает каждый раз, когда я нажимаю кнопку. Проведя дополнительное исследование, я обнаружил, что переход к фрагменту профиля и возврат к фрагменту home делает новую кнопку списка воспроизведения бесполезной, независимо от кода внутри функции onclick. В случае, если это поможет, вот код для перенаправления навигации:
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.nav_home:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new HomeFragment()).commit();
break;
case R.id.nav_profile:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ProfileFragment()).commit();
break;
case R.id.nav_email:
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"person@example.com"});
startActivity(emailIntent);
break;
}
drawer.closeDrawer(GravityCompat.START);
return true;
}
Я могу только предположить, что изменение фрагментов приводит к исчезновению события onClick, но я не знаю, как это исправить.
Редактировать
Я попытался добавить onClick при создании нового фрагмента домашнего объекта, но проблема все еще сохраняется.