We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
更新依赖androidx.appcompat:appcompat至1.3.0及以上会出现非第一个Fragment都显示为空白。
public class FragmentActivity extends AppCompatActivity { private ActivityFragmentBinding binding; private int curFragmentIndex; private List<Fragment> fragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LogUtils.i("FragmentActivity onCreate"); binding = ActivityFragmentBinding.inflate(getLayoutInflater()); setContentView(binding.getRoot()); BottomNavigationView navView = findViewById(R.id.nav_view); // 不用他的代码 // AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder( // R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications) // .build(); // NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_fragment); // NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); // NavigationUI.setupWithNavController(binding.navView, navController); fragments = new ArrayList<>(); fragments.add(new HomeFragment()); fragments.add(new DashboardFragment()); fragments.add(new NotificationsFragment()); for (int i = 0; i < fragments.size(); i++) { getSupportFragmentManager().beginTransaction() .add(R.id.fragment, fragments.get(i), String.valueOf(i)) .setMaxLifecycle(fragments.get(i), Lifecycle.State.STARTED) .hide(fragments.get(i)) .commit(); } getSupportFragmentManager().beginTransaction() .show(fragments.get(curFragmentIndex = 0)) .setMaxLifecycle(fragments.get(curFragmentIndex), Lifecycle.State.RESUMED) .commit(); navView.setOnItemSelectedListener(item -> { select(item.getOrder()); return true; }); } public void select(int position) { getSupportFragmentManager().beginTransaction() .hide(fragments.get(curFragmentIndex)) .show(fragments.get(position)) .setMaxLifecycle(fragments.get(curFragmentIndex), Lifecycle.State.STARTED) .setMaxLifecycle(fragments.get(position), Lifecycle.State.RESUMED) .commit(); curFragmentIndex = position; } }
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingTop="?attr/actionBarSize"> <com.google.android.material.bottomnavigation.BottomNavigationView android:id="@+id/nav_view" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="0dp" android:layout_marginEnd="0dp" android:background="?android:attr/windowBackground" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:menu="@menu/bottom_nav_menu" /> <!-- <fragment--> <!-- android:id="@+id/nav_host_fragment_activity_fragment"--> <!-- android:name="androidx.navigation.fragment.NavHostFragment"--> <!-- android:layout_width="match_parent"--> <!-- android:layout_height="match_parent"--> <!-- app:defaultNavHost="true"--> <!-- app:layout_constraintBottom_toTopOf="@id/nav_view"--> <!-- app:layout_constraintLeft_toLeftOf="parent"--> <!-- app:layout_constraintRight_toRightOf="parent"--> <!-- app:layout_constraintTop_toTopOf="parent"--> <!-- app:navGraph="@navigation/mobile_navigation" />--> <FrameLayout android:id="@+id/fragment" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintBottom_toTopOf="@id/nav_view" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
bottom_nav_menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/navigation_home" android:icon="@drawable/ic_home_black_24dp" android:orderInCategory="0" android:title="@string/title_home" /> <item android:id="@+id/navigation_dashboard" android:icon="@drawable/ic_dashboard_black_24dp" android:orderInCategory="1" android:title="@string/title_dashboard" /> <item android:id="@+id/navigation_notifications" android:icon="@drawable/ic_notifications_black_24dp" android:orderInCategory="2" android:title="@string/title_notifications" /> </menu>
@Override public void onResume() { super.onResume(); UltimateBarX.statusBar(this) .light(true) .color(Color.WHITE) .apply(); }
当androidx.appcompat:appcompat版本为1.2.0或去掉Fragment中UltimateBarX的代码时显示正常。 看见有人说是升级Fragment的原因,appcompat从1.2.0升级到1.3.0也确实把Fragment从1.1.0更新到1.3.4了。 https://developer.android.com/jetpack/androidx/releases/appcompat#version_130_3
androidx.appcompat:appcompat
UltimateBarX
appcompat
Fragment
1.1.0
1.3.4
The text was updated successfully, but these errors were encountered:
No branches or pull requests
更新依赖androidx.appcompat:appcompat至1.3.0及以上会出现非第一个Fragment都显示为空白。
复现方式
新建Activity File -> Activity ->Bottom Navigation Activity
修改Activity代码
修改Activity xml
修改
bottom_nav_menu.xml
在各个Fragment中添加
当
androidx.appcompat:appcompat
版本为1.2.0或去掉Fragment中UltimateBarX
的代码时显示正常。看见有人说是升级Fragment的原因,
appcompat
从1.2.0升级到1.3.0也确实把Fragment
从1.1.0
更新到1.3.4
了。https://developer.android.com/jetpack/androidx/releases/appcompat#version_130_3
The text was updated successfully, but these errors were encountered: