2016-05-05 11 views
2

奇妙なナビゲーション動作が発生していますが、なぜそれがどのように修正されるのかわかりません。Android Broken Navigation

Android Studio 2.1で新しいプロジェクトを作成し、アクティビティギャラリーからLogin ActivityMaster/Detail Flow Activityを追加しました。

私はLoginActivityattemptLogin()内部に次のコードを追加しました:

Intent intent = new Intent(this, ItemListActivity.class); 
startActivity(intent); 

この方法は、アプリがLogin Activityで開き、私はSign Inボタンをクリックしたとき、それはこれまでのところ.... Master/Detail Flow Activityにジャンプとても良い....しかし、Master/Detail Flow Activityツールバーの戻るホームボタンをクリックすると、アプリケーションは終了し、期待通りにLogin Activityに戻りません。

Master/Detail Flow Activityは、項目をクリックすると新しい項目Activityが開き、項目の詳細が表示され、戻るボタンが期待通りに機能し、List Activityに戻ります。

私は戻ってスタックを変更します Login Activityまたは Master/Detail Flow Activityで任意のコードを見つけることができません

、私もアプリが行く作り、二Login Activityを追加しました:

Login Activity 1 - >Login Activity 2 - >Master/Detail Flow Activity

これはLogin Activity 1Login Activity 2の間で予想どおりに動作しますが、Master/Detail Flow Activityから戻ってみると、Login Activity 2に戻るのではなく、アプリケーションを終了します... Master/Detail Flow Activityのいずれかが、スタック。私のAndroidManifestもそうでなければならない(それはAndroid Studioによって自動的に生成された、私は何も変更しなかった)。

私もやってみました:

Login Activity 1 - >Login Activity 2 - >Master/Detail Flow Activity 1 - >Master/Detail Flow Activity 2

を、エラーがまだLogin Activity 2 -> Master/Detail Flow Activity 1間に存在する...しかしMaster/Detail Flow Activity 1 -> Master/Detail Flow Activity 2Login Activity 1 -> Login Activity 2の間で期待どおりに動作します。..このテストではLogin Activityの新しいActivityの呼び出しではなく、Master/Detail Flow Activityの受信でもなく、これらの2つの特定のインターフェイスの間だけであることがわかっているので、これはもう一度、そこに手がかりがなく、これは本当に奇妙になりましたActivities

これは私が言ったように誰でも試して再生することができ、新しいプロジェクトを作成してActivitiesを作成するのはかなり簡単です。 Login Activityに戻るにはどうすればよいですか?なぜこうなった?


EDIT:

テスト用

完全なコードhere

+0

ベスト・アプローチ:最初にブレークポイントでコードをデバッグし、バグが見つからなければコードを投稿してください。 –

+0

私はそれをすべてデバッグしました...コードが大きすぎるため、Android Studioで簡単に作成できます。 – mFeinstein

答えて

2

あなたの問題は、あなたの内部クラスUserLoginTaskで、そのはLoginActivityクラスの内部で、あなたは仕上げ()を呼び出していることの中にありますonPostExecute()メソッド。この行を削除すると、アプリが正常に動作していることがわかります。 だから、このようになります:予想通り

 @Override 
     protected void onPostExecute(final Boolean success) { 
      mAuthTask = null; 
      showProgress(false); 

      if (!success) { 
       mPasswordView.setError(getString(R.string.error_incorrect_password)); 
       mPasswordView.requestFocus(); 
      } 
     } 

私がテストされ、その作業!

+0

私は今、ばかげていると感じています...私はすべての 'finish'と' navigateUpFromSameTask'を探しました。私はこれを逃したと思います!ありがとう!私が得ることのないただ一つのこと....なぜ両方が終了したら、なぜLoginActivity2からLoginActivityに戻るのでしょうか? – mFeinstein

+0

いいえ、明示的なfinish()を行うと、アクティビティは終了します。あなたのためにうまくいくなら、この答えを正しいとマークしてください – JpCrow

+0

私はそれを得ました....私はそれを早くやっているので、活動の間を行き来することができます... 2秒未満です。これはバックグラウンドの仕事の遅れです。私は2秒以内に移動する限り、すべての作品.....すべて今意味があります!ありがとう! – mFeinstein