2012-06-13 28 views
1

我期待在我目前正在研究的一個小應用程序中出現相當奇怪的行爲。安卓在瀏覽器上的後退鍵不會啓動以前的活動

該應用程序由兩個活動組成。從第一項活動中,我通過意向啓動webbbrowser。當我在瀏覽器中按下後退鍵時,即使我在啓動之前先手動關閉了應用程序,它也會返回到SECOND活動。

1)第一活動

final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mWebShopURL)); 
startActivity(intent); 

第一活動啓動第二活動這樣

Intent intent = new Intent(getApplicationContext(), SecondActivity.class); 
Bundle b = new Bundle(); 
b.putString("product", mProduct); 
intent.putExtras(b); 
startActivity(intent); 

2)第二活動 - >第一活動

onBackPressed(); 

AndroidManifest

<activity 
     android:name=".FirstActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".SecondActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
    </activity> 
+0

你在哪裏放置了「第一次活動啓動第二次活動」這樣的代碼? – Nick

+0

Thx爲您的答覆。它位於View.OnClickListener中,當用戶單擊一個簡單的按鈕時就會啓動。 – felix

回答

0

如果您希望第二項活動完成並在用戶點擊您在評論中引用的簡單「後退按鈕」時離開,請不要致電onBackPressed()。請致電finish()。這將使第二個活動消失並將用戶返回到第一個活動。

你的問題是,你從來沒有從堆棧中刪除第二個活動,這就是爲什麼從瀏覽器返回顯示該活動。

+0

大衛,感謝您的回覆。只是打完()也沒有幫助。我和你在一起,這是一個堆棧問題。如果我打電話給finish(),或者我從@Abhi的意圖中調用第一個活動,則表明第一個活動應該是堆棧中的第一個活動。所以我很茫然。 – felix

+0

我用我的代碼編寫了一個虛擬應用程序,它實際上工作(與onBackPressed())罰款..:/ – felix

+0

那麼,完成()是正確的事情,而不是模擬後退按鈕。在任何情況下,我都沒有看到可能造成這種情況的原因。你能發佈更多的代碼嗎?告訴我們你如何到達網頁瀏覽器。向我們展示您的其他生命週期方法,如onCreate(),onResume()等,或者只是將所有代碼發佈到某處並在此處放置一個鏈接。 –

0

如果我是正確的你在你的第二Activity.Dont覆蓋onBackPressed()做,把onBackPressed()代碼中的註釋和嘗試。希望它會幫助:)

+0

不,我不會壓倒它。我只是在用戶點擊一個簡單的「後退按鈕」時調用onBackPressed()。無論如何,thx爲您的答覆。 – felix

+0

你有單獨的後退按鈕回到第一個活動?如果是,打電話意圖開始第一次活動 – Abhi

+0

是的,這是一個更優雅的解決方案,但它不能很好地解決我的問題;) – felix

相關問題