Я работаю над приложением для Android и потратил много времени на реализацию NavController с помощью BottomNavigationView. Он работает правильно, я могу переключаться между различными кнопками, но содержимое пусто. Он отображается только тогда, когда я переключаю светлый режим в темный режим (на моем устройстве, а не в приложении) или наоборот, чтобы контент начал отображаться.
Моя домашняя активность имеет 3 фрагмента, которые она вызывает. домашний фрагмент, фрагмент поиска и фрагмент профиля.
Панель навигации работает правильно, и я могу переключаться между кнопками, но содержимое отображается только при переключении текущей темы моего устройства.
Это не проблема цветов. Я попробовал изменить textColor, но это не сработало. Это также не проблема в файле themes.xml.
Предварительный просмотр моего домашнего файла Activity.xml показывает данные домашнего фрагмента, отображаемые в нем, поэтому я думаю, что где-то программно текст пропал, и я просто понятия не имею, где.
HomeActivity.java
public class Home extends AppCompatActivity {
TextView tvSong, tvArtist;
ImageView ivCover, ivPlayButton;
ActivityHomeBinding binding;
MaterialCardView cardView;
BottomNavigationView bottomNavigationView;
NavController navController;
private static final int ANIMATION_DURATION = 150; // Duration in milliseconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
binding = ActivityHomeBinding.inflate(getLayoutInflater());
setContentView(R.layout.activity_home);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.homePage), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
tvSong = findViewById(R.id.tvSong);
tvArtist = findViewById(R.id.tvArtist);
ivPlayButton = findViewById(R.id.ivPlay);
cardView = findViewById(R.id.mcvCurrentSong);
bottomNavigationView = findViewById(R.id.bnBotNav);
final MutableLiveData[] musicPlaying = new MutableLiveData[]{new MutableLiveData()};
musicPlaying[0].setValue(true);
musicPlaying[0].observe(this, aBoolean -> {
if (Boolean.TRUE.equals(aBoolean)) {
cardView.setVisibility(View.VISIBLE);
cardView.setAlpha(0f);
cardView.animate()
.alpha(1f)
.setDuration(ANIMATION_DURATION)
.setListener(null);
ivPlayButton.setImageResource(R.drawable.ic_pause);
} else {
cardView.animate()
.alpha(0f)
.setDuration(ANIMATION_DURATION)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
cardView.setVisibility(View.GONE);
}
});
ivPlayButton.setImageResource(R.drawable.ic_play);
}
});
ivPlayButton.setOnClickListener(v -> {
if (Boolean.TRUE.equals(musicPlaying[0].getValue())) {
ivPlayButton.setImageResource(R.drawable.ic_pause);
musicPlaying[0].setValue(false);
} else {
ivPlayButton.setImageResource(R.drawable.ic_play);
musicPlaying[0].setValue(true);
}
});
final NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.navHostFragment);
assert navHostFragment != null;
navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(bottomNavigationView, navController);
}
}
ActivityHome.xml
NAV GRAPH.xml
Первым фрагментом для загрузки является Home Fragment.java
ВСЕ МОИ ФРАГМЕНТЫ Бэкэнд-код в настоящее время просто раздувает макет а xml — это просто текст и изображение. ничего не отображается, пока тема не будет переключена.
package com.example.synthshine_music;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... mode-is-sw
Фрагменты приложений Android, отображающие контент только при переключении темы (освещение/режим) ⇐ Android
Форум для тех, кто программирует под Android
1720375859
Anonymous
Я работаю над приложением для Android и потратил много времени на реализацию NavController с помощью BottomNavigationView. Он работает правильно, я могу переключаться между различными кнопками, но содержимое пусто. Он отображается только тогда, когда я переключаю светлый режим в темный режим (на моем устройстве, а не в приложении) или наоборот, чтобы контент начал отображаться.
Моя домашняя активность имеет 3 фрагмента, которые она вызывает. домашний фрагмент, фрагмент поиска и фрагмент профиля.
Панель навигации работает правильно, и я могу переключаться между кнопками, но содержимое отображается только при переключении текущей темы моего устройства.
Это не проблема цветов. Я попробовал изменить textColor, но это не сработало. Это также не проблема в файле themes.xml.
Предварительный просмотр моего домашнего файла Activity.xml показывает данные домашнего фрагмента, отображаемые в нем, поэтому я думаю, что где-то программно текст пропал, и я просто понятия не имею, где.
[b]HomeActivity.java[/b]
public class Home extends AppCompatActivity {
TextView tvSong, tvArtist;
ImageView ivCover, ivPlayButton;
ActivityHomeBinding binding;
MaterialCardView cardView;
BottomNavigationView bottomNavigationView;
NavController navController;
private static final int ANIMATION_DURATION = 150; // Duration in milliseconds
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EdgeToEdge.enable(this);
binding = ActivityHomeBinding.inflate(getLayoutInflater());
setContentView(R.layout.activity_home);
ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.homePage), (v, insets) -> {
Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
return insets;
});
tvSong = findViewById(R.id.tvSong);
tvArtist = findViewById(R.id.tvArtist);
ivPlayButton = findViewById(R.id.ivPlay);
cardView = findViewById(R.id.mcvCurrentSong);
bottomNavigationView = findViewById(R.id.bnBotNav);
final MutableLiveData[] musicPlaying = new MutableLiveData[]{new MutableLiveData()};
musicPlaying[0].setValue(true);
musicPlaying[0].observe(this, aBoolean -> {
if (Boolean.TRUE.equals(aBoolean)) {
cardView.setVisibility(View.VISIBLE);
cardView.setAlpha(0f);
cardView.animate()
.alpha(1f)
.setDuration(ANIMATION_DURATION)
.setListener(null);
ivPlayButton.setImageResource(R.drawable.ic_pause);
} else {
cardView.animate()
.alpha(0f)
.setDuration(ANIMATION_DURATION)
.setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
cardView.setVisibility(View.GONE);
}
});
ivPlayButton.setImageResource(R.drawable.ic_play);
}
});
ivPlayButton.setOnClickListener(v -> {
if (Boolean.TRUE.equals(musicPlaying[0].getValue())) {
ivPlayButton.setImageResource(R.drawable.ic_pause);
musicPlaying[0].setValue(false);
} else {
ivPlayButton.setImageResource(R.drawable.ic_play);
musicPlaying[0].setValue(true);
}
});
final NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.navHostFragment);
assert navHostFragment != null;
navController = navHostFragment.getNavController();
NavigationUI.setupWithNavController(bottomNavigationView, navController);
}
}
[b]ActivityHome.xml[/b]
[b]NAV GRAPH.xml[/b]
Первым фрагментом для загрузки является [b]Home Fragment.java[/b]
ВСЕ МОИ ФРАГМЕНТЫ Бэкэнд-код в настоящее время просто раздувает макет а xml — это просто текст и изображение. ничего не отображается, пока тема не будет переключена.
package com.example.synthshine_music;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.navigation.NavController;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class HomeFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_home, container, false);
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78718071/android-application-fragments-showing-content-only-when-theme-light-mode-is-sw[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия