Добавление нижней навигации к фрагменту — navHostFragment возвращает значение nullJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Добавление нижней навигации к фрагменту — navHostFragment возвращает значение null

Сообщение Anonymous »

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

Код: Выделить всё

FATAL EXCEPTION: main
Process: com.otemainc.m_kliniki, PID: 29940
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.otemainc.m_kliniki/com.otemainc.m_kliniki.controller.MainActivity}: android.view.InflateException: Binary XML file line #15: Binary XML file line #19: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2993)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3128)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1888)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6801)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:518)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: android.view.InflateException: Binary XML file line #15: Binary XML file line #19: Error inflating class fragment
Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class fragment
Caused by:  java.lang.NullPointerException
at java.util.Objects.requireNonNull(Objects.java:203)
at com.otemainc.m_kliniki.controller.fragments.HomeFragment.onCreateView(HomeFragment.java:33)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:3114)
at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager.java:557)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:272)
at androidx.fragment.app.FragmentStore.moveToExpectedState(FragmentStore.java:114)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1455)
at androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:3034)
at androidx.fragment.app.FragmentManager.dispatchViewCreated(FragmentManager.java:2945)
at androidx.fragment.app.Fragment.performViewCreated(Fragment.java:3148)
at androidx.fragment.app.FragmentStateManager.ensureInflatedView(FragmentStateManager.java:410)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState(FragmentStateManager.java:271)
at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView(FragmentLayoutInflaterFactory.java:142)
at androidx.fragment.app.FragmentController.onCreateView(FragmentController.java:136)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:247)
at androidx.fragment.app.FragmentActivity.onCreateView(FragmentActivity.java:226)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:780)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:863)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:995)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:859)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:995)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:859)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at com.otemainc.m_kliniki.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:53)
at com.otemainc.m_kliniki.databinding.ActivityMainBinding.inflate(ActivityMainBinding.java:47)
at com.otemainc.m_kliniki.controller.MainActivity.onCreate(MainActivity.java:38)
2024-10-23 08:06:51.946 29940-29940 AndroidRuntime          com.otemainc.m_kliniki               E      at android.app.Activity.performCreate(Activity.java:7185)                                                                                                       at android.app.Activity.performCreate(Activity.java:7176)                                                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1285)                                                                                                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2973)                                                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3128)                                                                                                    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)                                                                                                     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)                                                                                                     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)                                                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1888)                                                                                                     at android.os.Handler.dispatchMessage(Handler.java:106)                                                                                                     at android.os.Looper.loop(Looper.java:193)                                                                                                      at android.app.ActivityThread.main(ActivityThread.java:6801)                                                                                                    at java.lang.reflect.Method.invoke(Native Method)                                                                                                       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:518)                                                                                                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
По сути, я добавил нижнюю навигацию и представление контейнера фрагментов, которое будет действовать как хост-фрагмент следующим образом: Я также создал навигационный граф и назвал идентификатор каждого элемента фрагмента навигации тем же именем, что и в пунктах меню, следующим образом:
//Фрагмент навигации

Код: Выделить всё

      








//The menu










Наконец, в файл HomeFragment.java я добавил код для инициализации каждого элемента и настройки контроллера навигации следующим образом:

Код: Выделить всё

 public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
BottomNavigationView navigationView = root.findViewById(R.id.bottom_navigation_view);
// Passing each menu ID as a set of Ids because each
// menu should be considered as top level destinations.
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.userDashboardFragment, R.id.calculatorFragment, R.id.reservationFragment, R.id.walletFragment)
.build();
AppCompatActivity appCompat = (AppCompatActivity) requireActivity();
NavHostFragment navHostFragment = (NavHostFragment) appCompat.getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment_activity_nav);
NavController navController = Objects.requireNonNull(navHostFragment).getNavController();
NavigationUI.setupActionBarWithNavController((AppCompatActivity) this.requireActivity(), navController, appBarConfiguration);
NavigationUI.setupWithNavController(navigationView, navController);
return root;
}
Код аварийно завершает работу при запуске, несмотря на отсутствие каких-либо ошибок в IDE, и когда я устанавливаю точки отладки, я понимаю, что проблема связана с нулевым значением navHostFragment. Что мне может не хватать? Есть идеи, как успешно установить для navhostfragment значение, указанное в фрагменте_home.xml?
После установки точек отладки на линии дробления и над ней, ниже приведены скриншоты результатов
Изображение
Изображение


Подробнее здесь: https://stackoverflow.com/questions/791 ... turns-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»