2016-08-23 64 views
0

我遇到了奇怪的問題,可以說我有兩個活動A和B,應用程序以活動A開始,我繼續活動B按下Android主頁按鈕,返回到帶給我的應用程序回到Activity B,然後按下Back按鈕(在工具欄上的硬件)並關閉應用程序,但它應該讓我返回到活動A.活動B沒有覆蓋onBackPressed並且活動A在manifest中聲明爲PARENT_ACTIVITY。我用無意義的Intent開始它。任何想法爲什麼發生這種情況由於當按下主屏幕按鈕時,背景中的活動被殺死

+1

發佈您的源代碼 – Krish

回答

1

感謝您的幫助,問題是由這個標誌導致的清單android中的activity:launchMode = singleinstance(它本來不是我的項目,所以我錯過了,我只是希望我沒有通過刪除它來解決其他問題)

1

在您的活動。當你打電話給你的活動B,也許你有下面的命令:

finish(); 

如果是的話,你應該刪除此行。然後,當您從活動B中按回密鑰時,您應該返回A. 如果沒有,也許嘗試分享您的代碼。

1

後退按鈕的行爲取決於系統版本。有在較舊的Android版本提供後臺導航功能的支持,在這裏描述:

https://developer.android.com/training/implementing-navigation/ancestral.html

<application ... > 
    ... 
    <!-- The main/home activity (it has no parent activity) --> 
    <activity 
     android:name="com.example.myfirstapp.MainActivity" ...> 
     ... 
    </activity> 
    <!-- A child of the main activity --> 
    <activity 
     android:name="com.example.myfirstapp.DisplayMessageActivity" 
     android:label="@string/title_activity_display_message" 
     android:parentActivityName="com.example.myfirstapp.MainActivity" > 
     <!-- Parent activity meta-data to support 4.0 and lower --> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.example.myfirstapp.MainActivity" /> 
    </activity> 
</application> 

調試回堆問題的最佳和最方便的方法是使「不保留活動」選項開發者選項。

這是我最好的猜測。祝你好運!

1

爲了不破壞老的一個運行一個新的活動,您必須將標誌FLAG_ACTIVITY_NEW_TASK添加到將運行該活動的意圖:

Intent intent = new Intent(MainActivity.this, MainActivity2.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 

如設置此標誌時:

此活動將成爲此歷史記錄 堆棧上新任務的開始。任務(從開始它到下一個任務 活動的活動)定義用戶可以將 移動到的活動的原子組。任務可以移動到前臺和後臺;特定任務中的所有 活動始終保持相同的順序。

所以它開始它會留在堆棧,因此可以再次調用它,因此它也可以再次自動按BACK_BUTTON時,即使您按下HOME_BUTTON前面提到的那種活動。


,你必須@gduh答案與我相結合,爲確保你必須確保你是不是在ActivityA調用finish();同時調用ActivityB

相關問題