здесь это код: < /p>
Код: Выделить всё
class LoginFragment : BaseFragment() {
override val layoutRes: Int = R.layout.fragment_login
private val binding: FragmentLoginBinding by viewBinding()
private val viewModel: LoginViewModel by viewModel()
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
return ComposeView(requireContext()).apply {
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
setContent {
AppTheme {
LoginContentPortrait()
}
}
}
}
@OptIn(ExperimentalLayoutApi::class)
@Composable
private fun LoginContentPortrait(modifier: Modifier = Modifier) {
val uiState by viewModel.uiState.collectAsState()
val configuration = LocalConfiguration.current
val isInPortraitMode by remember {
derivedStateOf { configuration.orientation == Configuration.ORIENTATION_PORTRAIT }
}
viewModel.subscribeToEvents().collectWithLifecycle(viewLifecycleOwner) { event ->
when (event) {
is UIEvent.Navigation.Register -> {
findNavController().navigate(
LoginFragmentDirections.actionLoginFragmentToRegisterFragment()
)
}
(other similar cases)
}
}
...
Column(
Modifier
.fillMaxSize()
.padding(
start = 24.dp,
end = 24.dp,
bottom = 16.dp,
top = if (isInPortraitMode) 96.dp else 16.dp
)
.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.spacedBy(8.dp)
) {
Row {
Column(
Modifier
.weight(0.5f)
.then(modifier),
horizontalAlignment = Alignment.CenterHorizontally,
) {
...(rest of the UI layout)...
SecondaryButton(
modifier = Modifier.fillMaxWidth(if (isInPortraitMode) 1f else 0.3f),
borderStroke = BorderStroke(1.dp, colorResource(CoreR.color.core_dark20)),
onClick = {
viewModel.navigateRegister()
}
) {
ButtonLabel(
text = stringResource(R.string.auth_createAccount),
textColor = colorResource(CoreR.color.core_black)
)
}
}
}
}
}
< /code>
Как вы можете видеть, после нажатия кнопки регистра, она вызывает ViewModel, которая затем издает соответствующее событие, которое затем поймано фрагментом. Теперь, как только findnavController (). Vavigate (loginFragmentDirections.ActionLoginFragmentToreGisterFragment ())
Код: Выделить всё
...
...
Исключение: < /p>
java.lang.IllegalArgumentException: Navigation action/destination package:id/action_loginFragment_to_registerFragment cannot be found from the current destination Destination(package:id/registerFragment) label=RegisterFragment class=package.RegisterFragment
< /code>
p.s. Я проверил различные, казалось бы, похожие посты здесь о похожих проблемах, но ни один из них не работал для моего дела или, казалось, не охватывал этот точный случай, поэтому я публикую.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -exception