2017-10-09 3 views
2

これはSOが私に与えたすべての「類似の」質問とは非常に異なります。 、今1つのアクティビティで電話バックボタンを押すと、前に初期化されていない別のアクティビティに移動します

Intent userProfileIntent = new Intent(SignUpActivity.this, UserProfileActivity.class); 
startActivity(userProfileIntent); 
finish(); 

SignUpActivity:私は、私は、次のコードを使用してUserProfileActivityと呼ばれる別のアクティビティにそれらを取る、アプリとする場合、ユーザーのサインアップSignUpActivityと呼ばれる1つの活動のアカウントに取り組んでいますUserProfileActivityでは、戻るボタンを押すと、PartyListActivityというアプリケーションのライフタイム中に一度も訪問/インスタンス化されていないアクティビティに移動します。

UserProfileActivity:

public class UserProfileActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_profile); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
         .setAction("Action", null).show(); 
      } 
     }); 
    } 

} 

私が前にPartyListActivityに行ったことがないときだから私の質問は、なぜ、私は戻ってUserProfileActivityで押したとき、それは、バックPartyListActivityに行くんですか?マニフェストファイルにこの動作を指示する何かがありますか?

編集

のAndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.sample.package"> 

    <!-- To auto-complete the email text field in the login form with the user's emails --> 
    <uses-permission android:name="android.permission.GET_ACCOUNTS" /> 
    <uses-permission android:name="android.permission.READ_PROFILE" /> 
    <uses-permission android:name="android.permission.READ_CONTACTS" /> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
     <activity 
      android:name=".LoginActivity" 
      android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".SignUpActivity" 
      android:label="@string/title_activity_sign_up" /> 
     <activity 
      android:name=".PartyListActivity" 
      android:label="@string/title_activity_party_list" 
      android:theme="@style/AppTheme.NoActionBar" /> 
     <activity 
      android:name=".UserProfileActivity" 
      android:label="@string/title_activity_user_profile" 
      android:theme="@style/AppTheme.NoActionBar" /> 
     <activity 
      android:name=".FriendsActivity" 
      android:label="@string/title_activity_friends" 
      android:theme="@style/AppTheme.NoActionBar" /> 
    </application> 

</manifest> 
+0

ときはPartyListActivityに呼ぶのですか?あなたの目録を見せてください! – redAllocator

+0

adbを使用して、バックグラウンドのバックスワップ 'adb shell dumpsys activity package 'を印刷することができます。 –

+0

@redAllocator他のメソッドでPartyListActivityを呼び出します。しかし、それらのメソッドは、私が再現している状況では決して呼び出されません。そしてAyushKhareはいつ実行するのですか? – Michael

答えて

1

私はものを壊し、アクティビティの流れを追跡するために全力を尽くすよ:

  • あなたを起動するだけでなく、ルート活動は、(あなたのmanifestファイルから)LoginActivity
    です。

  • 次に、LoginActivityから、UIアクションまたはプログラムで(LoginActivityが終了していないと仮定して)SignUpActivityと入力しました。

  • SignUpActivityUserProfileActivityに入力しました。 (SignUpActivityの仕上げ、つまりSignUpActivityはバックスタックから削除されます)。 SignUpActivityがすでにバックスタックから削除されたためLoginActivityにあなたが取るから

  • 今、あなたは、UserProfileActivityにいると、ボタンを押すとバック​​。

  • あなたはPartyListActivityだと言っていますが、プログラムで起動するのはLoginActivityです。

あなたLoginActivityで見て、予想外の活動がそこから始まっています。

Tasks and Back Stack詳細

+0

それはまさにそれです。私は自分の活動からログイン活動に戻ります。その後、Gmailにまだログインしているかどうかを確認します。私がいれば、それはPartyListActivityを開始する意図を開始する。私はそれを試していないが、それは正確に何がこの問題を引き起こす必要があります。私はすぐに答えを受け入れるでしょう!ありがとう – Michael

+0

'LoginActivity'で' PartyListActivity'を起動した後に 'LoginActivity'を破棄すると、問題が解決するかもしれません。 – Journey

0

あなたがのAndroidManifest.xmlでの活動の定義における "parentActivityName" 属性を指定することができます。 SignUpActivityの定義にそのような属性がありますか?

バックスワップナビゲーションに関するこの属性およびその他の情報の全文は、https://developer.android.com/training/implementing-navigation/temporal.htmlから入手できます。

+0

私が間違っている場合は私を修正しますが、私が読んだところでは、parentActivityNameを設定してアプリケーションを終了するか、PartyListActivityに行くと言っていると思いますか?いずれにしても、手動で設定する必要はありません。私がUserProfileActivityにいて、それにつながるすべてのアクティビティが 'finish()'を使用していた場合は、なぜ私が戻るボタンを押したときにPartyListActivityがバックスタックにあるのかを知りたいです。 – Michael

0

オプション1: UserProfileActivityの終了後にPartyListActivityが起動しているとは限りません。どういうわけか、あなたはその活動を設定したり呼び出したりしています。コードを再確認してください。

オプション2: UserProfileActivity活動自体を終了しようとonBackPress()(でも、それが終了します)

@Override 
    public void onBackPressed() { 
     super.onBackPressed(); 
     finish(); 
    } 
関連する問題