ionic-native-transitions icon indicating copy to clipboard operation
ionic-native-transitions copied to clipboard

Hardware back button different action than ion-nav-buttons

Open fgagneten opened this issue 7 years ago • 2 comments

On click hardware back button in an specific view I get:

[INFO:CONSOLE(11706)] "[native transition] same state transition are not possible", source: file:///android_asset/www/bower_components/angular/angular.js (11706)

What is weird that if I click in the same view the ion-nav-buttons back button, works perfectly.

I have 3 view, the view what I'm talking about is view 2. If I go from view 1 to view 2 and then click on hardware back button goes again to view 1 thats perfect.

The problem is if I go to view 2 from view 1, then I go to view 3 and after that I click back button (or ion-nav-bar) in view 3 I go back to view 2. There is the problem when I click only hardware back button on view 2 after go back from view 3.

To sum up:

  • View1 -> state.go(view2) -> View2 -> state.go(view1) -> View 1✔

  • View1 -> state.go(view2) -> View2 -> state.go(view3) -> View 3 -> state.go(view2) -> View 2 state.go(view1) with hardware back button -> "[native transition] same state transition are not possible"❌

This is my code:

HTML

<ion-view view-title="Title">
    <ion-nav-buttons side="left">
        <a class="button button-icon ion-android-arrow-back" ng-click="vm.volver()"></a>   
    </ion-nav-buttons>
    <ion-content> 
         ...
         ...
    </ion-content>

CONTROLLER:

(function() {
	'use strict';

	angular
		.module('package.complex')
		.controller('ComplexController', ComplexController);

	ComplexController.$inject = ['$state', 'complexService','$rootScope', '$ionicModal', '$ionicPlatform', '$ionicNativeTransitions'];

	function ComplexController($state, complexService,$rootScope, $ionicModal, $ionicPlatform, $ionicNativeTransitions) {
		var vm = this;
		vm.volver = volver;
	
		$ionicPlatform.registerBackButtonAction(function () {
			console.log("back button was clicked");
			volver();
		}, 100)

                    function volver() {
			console.log("method was called");
			$ionicNativeTransitions.stateGo('home', {session: 1}, {}, {
				"type": "slide",
				"direction": "right", // 'left|right|up|down', default 'left' (which is like 'next')
				"duration": 500, // in milliseconds (ms), default 400
			});
		};

MODULE

(function() {
	'use strict';

	angular
		.module('package.complex', [
			'ionic',
			'ngCordova'
		])
		.config(function($stateProvider) {
			$stateProvider
				.state('complexes', {
					url: '/usuario/complexes',
					templateUrl: 'scripts/package/complex/complex.html',
					controller: 'ComplexController as vm'
				});
		});
})();

Another thing: if I set in my module:

cache:false

Hard back button and ion-nav-buttons works perfectly. Sound weird?

Also, you can see a few logs there, well, on click hardware back button neither of them was called. Just when I click on ion-nav-buttons

Please, Someone can help me? I need to solve the problem ASAP.

EDIT: On hardware back button click, the state to go is the current state, so the script is not taking into account the new state that I'm sending.

Thanks

fgagneten avatar Nov 19 '17 11:11 fgagneten

+1 same issue

francozini2 avatar Nov 25 '17 01:11 francozini2

+1 Same problem here!

cuchujero avatar Nov 26 '17 00:11 cuchujero