নাভহোস্টফ্রেগমেন্ট হিসাবে ফ্রেগমেন্ট কনটেনারভিউ


20

মনে হচ্ছে FragmentContainerViewবাক্সের বাইরে কাজ করে না?

<androidx.fragment.app.FragmentContainerView
        class="androidx.navigation.fragment.NavHostFragment"
        android:id="@+id/fragment_nav_host"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_app" />

এখানে আমার কোড ব্যবহার করা হচ্ছে fragment-ktx:1.2.0-rc01এবং আমি সবসময় এই ত্রুটিটি পেয়ে যাচ্ছি:

Caused by: java.lang.IllegalStateException: Activity ...MainActivity@797467d does not have a NavController set on 2131296504

কেবল <fragment>কাজ এবং এএফআইএকে ব্যবহার করে, এটি কেবলমাত্র দ্বারা প্রতিস্থাপিত হওয়ার কথা FragmentContainerView

আমি কি কিছু মিস করছি বা কেউ FragmentContainerViewহিসাবে ব্যবহার করতে সক্ষম হয়েছিল NavHostFragment?

অনেক ধন্যবাদ!

উত্তর:


27

এই বাগ-প্রতিবেদনের কারণে: https://issuetracker.google.com/issues/142847973

এর একমাত্র উপায় (বর্তমানে):

val navHostFragment = supportFragmentManager
    .findFragmentById(R.id.my_nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController

(জাভা):

NavHostFragment navHostFragment =
    (NavHostFragment) getSupportFragmentManager()
        .findFragmentById(R.id.my_nav_host_fragment);
NavController navController = navHostFragment.getNavController();

2
fragmentএই workaround ব্যবহার মনে রাখা সম্পর্কে চিন্তা করার চেয়ে অবশ্যই আরও ভাল ব্যবহার করা? আমরা ক্র্যাশগুলি
দেখছিলাম

0

আমি যা করেছি তা হল নেভিগেশন খণ্ডটির দৃশ্য দেখার জন্য অপেক্ষা করা:

    super.onCreate(savedInstanceState)

    // Set up the form and list.
    setContentView(R.layout.activity_xxx)

    // Set up navigation - action bar and sidebar.
    /// Let the navigation view check/uncheck the menu items.
    nav_view.post { // wait for NavHostFragment to inflate
        val navController = findNavController()
        nav_view.setupWithNavController(navController)
        nav_view.setNavigationItemSelectedListener(this)
    }


-6

android:nameপরিবর্তে ব্যবহার class। কাজ করে।

<androidx.fragment.app.FragmentContainerView
    android:name="androidx.navigation.fragment.NavHostFragment"
    ...

ব্যবহার করার পরেও আমি ত্রুটিটি পেয়েছিandroid:name
স্যাম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.