Переход к другой деятельности с помощью Kotlin - PullRequest
0 голосов
/ 18 мая 2019

Я хочу переходить от одного занятия к другому с помощью контроллера навигации. Я не смог найти ни одного примера, который иллюстрирует, как это сделать. Документы Android указывают на использование одного из них для навигации:

Котлин

* Fragment.findNavController()
* View.findNavController()
* Activity.findNavController(viewId: Int)

Java

* NavHostFragment.findNavController(Fragment)
* Navigation.findNavController(Activity, @IdRes int viewId)
* Navigation.findNavController(View)

Я использую Kotlin. По какой-то странной причине Google решил создать отдельные методы для Kotlin и Java.

Ответы [ 2 ]

0 голосов
/ 18 мая 2019

Оказывается, что в редакторе навигации, который вы должны вручную ввести в место назначения действия, к которому вы хотите перейти. Вы должны сделать это в текстовом представлении, а не в представлении конструктора. Это кажется ошибкой или серьезной нехваткой функции в редакторе навигации. Он действительно должен перечислить все действия в вашем приложении, чего в настоящее время нет. В моем приложении я хочу перейти от действия входа в систему к основному действию. Это делается следующим образом:

<?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_login"
            app:startDestination="@id/loginFragment">

    <fragment android:id="@+id/loginFragment"
              android:name="com.linkedintools.ui.login.LoginFragment"
              android:label="login_fragment"
              tools:layout="@layout/fragment_login">
        <action android:id="@+id/action_loginFragment_to_mainActivity" app:destination="@id/mainActivity"/>
    </fragment>

    <activity android:id="@+id/mainActivity" 
              android:name="com.linkedintools.ui.main.MainActivity"
              android:label="mainActivity"/>
</navigation>

Затем я перемещаюсь, используя это:

findNavController().navigate(R.id.action_loginFragment_to_mainActivity)
0 голосов
/ 18 мая 2019

Сначала добавьте второе действие в качестве пункта назначения в навигации.Дайте этой транзакции имя действия.а затем в коде использовать.

        Navigation.findNavController(view).navigate(R.id.myTransaction);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...