Android Studio导航库问题

时间:2020-03-23 17:53:00

标签: android kotlin navigation

我想在我的应用程序中使用导航。

main_activity中声明

<?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"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">

    <!-- Main content -->
    <fragment
        android:id="@+id/nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />
    </androidx.constraintlayout.widget.ConstraintLayout>

然后我想使用动作从Fragment1转到Fragment2 更新,我添加了更多代码

class LoginFragment2 : Fragment(){
    private lateinit var viewModel : LoginViewModel2
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fr_login, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        initViews()

    }

    private fun initViews() {





    btn_registration.setOnClickListener {
//            Navigation.findNavController(it).navigate(R.id.action_loginFragment2_to_newTypeAccountFragment)
//            navController = Navigation.findNavController(view)
//            findNavController(it).navigate(R.id.action_loginFragment2_to_newTypeAccountFragment)
            this.findNavController().navigate(R.id.action_loginFragment2_to_newTypeAccountFragment)
        }

    }

我尝试了几种选择(但没有一种没有帮助我)

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.app.peshkariki, PID: 22658
    java.lang.IllegalStateException: View androidx.constraintlayout.widget.ConstraintLayout{ca39b84 
V.E...... ........ 0,0-720,1360} does not have a NavController set

如何正确使用它?

导航图(实际上,它很大,但是我会发布与该片段有关的一小部分)

 <?xml version="1.0" encoding="utf-8"?>
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/nav_graph"
        app:startDestination="@id/mainActivity">



        <fragment
            android:id="@+id/loginFragment2"
            android:name="com.app.peshkariki.newPesh.ui.login.LoginFragment2"
            android:label="LoginFragment2"
            tools:layout="@layout/fr_login">
            <action
                android:id="@+id/action_loginFragment2_to_newTypeAccountFragment"
                app:destination="@id/newTypeAccountFragment" />
        </fragment>
    </navigation>

1 个答案:

答案 0 :(得分:0)

您给$('#intolerance').tagsinput({ typeahead: { source: ['Dairy', 'Egg', 'Gluten', 'Grain', 'Peanut', 'Seafood', 'Sesame', 'Shellfish', 'Soy', 'Sulfite', 'Tree Nut', 'Wheat'] }, freeInput: true }); $('input').on('itemAdded', function(event) { setTimeout(function(){ $(">input[type=text]",".bootstrap-tagsinput").val(""); }, 1); }); 打过电话,但您不需要。

将其更改为

NavHostFragment

将此内容放入btn_registration.setOnClickListener { this.findNavController() .navigate(R.id.action_loginFragment2_to_newTypeAccountFragment) }

onViewCreated

另外,您可能想这样做course