2017-04-03 57 views
1

好的,我有創建以下回棧的應用程序:Android的後退按鈕導致根,而不是先前的活動

  • 詳細活動
  • 主要活動
  • 登錄活動
  • 它工作正常的設備有足夠的內存,但在舊的我遇到了一個奇怪的問題。在這樣的設備上,每個新的活動觸發前一個的破壞以獲得足夠的內存。但是,按詳細信息活動中的後退按鈕可將用戶導向登錄活動,而不是主活動。我使用默認行爲(清單文件中沒有Intent標誌或與棧相關的活動屬性)。根據我對documentation的理解,後退按鈕的默認行爲是讓您回到上一個活動,而不是根本活動。我錯過了什麼?

    編輯: 這裏是我在清單申報我的活動:

    <activity 
         android:name=".LoginActivity" 
         android:configChanges="orientation|keyboardHidden|screenSize" 
         android:label="@string/title_activity_login" 
         android:theme="@android:style/Theme.Holo.Light.NoActionBar"> 
         <intent-filter> 
          <action android:name="android.intent.action.MAIN"/> 
          <category android:name="android.intent.category.LAUNCHER"/> 
         </intent-filter> 
        </activity> 
        <activity 
         android:name=".BoardViewActivity" 
         android:configChanges="orientation|keyboardHidden|screenSize" 
         android:theme="@style/activity"> 
        </activity> 
        <activity 
         android:name=".TaskDetailsActivity" 
         android:configChanges="orientation|keyboardHidden|screenSize" 
         android:label="@string/title_activity_task_details"> 
        </activity> 
    

    LoginActivity開始BoardViewActivity:

    Intent intentBoardView = new Intent(this, BoardViewActivity.class); 
        intentBoardView.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 
        startActivity(intentBoardView); 
        finish(); 
    

    然後BoardViewActivity的片段開始TaskDetailsActivity:

    Intent intent = new Intent(getActivity(), TaskDetailsActivity.class); 
        startActivityForResult(intent, REQUEST_CODE_TASKDETAILS); 
    

    然後在TaskDetailsActivity中:

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        switch (item.getItemId()) { 
        case (android.R.id.home): 
         TaskDetailsActivity.this.setResult(RESULT_CANCELED); 
         finish(); 
         return true; 
    
        case (R.id.action_save): 
         save(); 
         return true; 
    
        default: 
         return super.onOptionsItemSelected(item); 
        } 
    } 
    
    @Override 
    public void onBackPressed() { 
    
        super.onBackPressed(); 
    } 
    

    如果我使用後退按鈕或軟件家(上)不要緊按鈕 - 它總是可以追溯到LoginActivity。

    +0

    你如何申報你的活動並調用新的實例?你能向我們展示你的清單嗎?你如何調用MainActivity和Details Activity? –

    +0

    增加了一些代碼。 – AXE

    回答

    0
    @Override 
        public void onBackPressed() { 
    
         finish(); 
         super.onBackPressed(); 
        } 
    

    使用BackPressed完成應用程序活動。

    +0

    將完成()添加到onBackPressed()不會改變行爲。 – AXE

    相關問題