2012-10-19 42 views
0

我在我的應用程序中有一個搜索功能,我有搜索活動,名爲SearchPage2.java,還有另一個活動(SearchTaDa.java),當單擊列表項時顯示更多信息。我發現我無法在SearchPage2.java中調用finish()onPause(),因爲我希望ListView在您從SearchTaDa.java按下我的軟件後退按鈕(或後退按鈕)時仍可見。但是因爲我沒有在SearchPage2.java中調用finish(),所以當您按下硬件主頁按鈕退出應用程序時,然後重新啓動應用程序,它會直接返回到SearchPage2活動,而不是從啓動屏幕重新開始應用程序,開始的應用程序。所以SearchPage2的onPause樣子:Android onPause問題

@Override 
protected void onPause() { 
    super.onPause(); 
    overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
} 

和更多信息的活動,SearchTaDa.java的onPause樣子:

@Override 
protected void onPause() { 
    super.onPause(); 
    overridePendingTransition(R.anim.fadein, R.anim.fadeout); 
    finish(); 
} 

我的問題是我能在SearchPage2活動叫你重新啓動時使它開始新鮮的應用程序,並不會恢復在搜索頁面?

+2

按home鍵是不應該退出程序。它只是把它放到背景中。如果用戶想要退出應用程序並重新啓動它,那就是後退按鈕(或後退操作欄項目)的用途。 –

回答

0

設置一個全局標誌「destroyOnResume」,如果設置了標誌,則調用完成onResume

更詳細:

某處在你的代碼中找出是否SearchPage2Activity應在下一次調用完成,並調整自己的標誌,這是在例如作爲全球成員的代碼的某個地方......

public static boolean destroySearchPage2OnResume = false; 

或將其放入您的SharedPreferences即使在應用程序被殺時仍然存在。

在SearchPage2.java中,您重寫了onResumeMethod,它會在您的應用進入後臺時在onRestart()或onPause()後調用。如果您的標誌設置爲true,則立即完成SearchPage2活動。

@Override 
protected void onResume() { 
    super.onPause(); 
    if(destroySearchPage2OnResume){ 
    this.finish(); 
    } 
} 

順便說一句,這將是清潔打電話給你activitys與no-history-flag,而不是在onPause殺死它...

+0

我明白沒有歷史標誌的想法,但可以給我一個destroyOnResume的代碼示例嗎?我不明白你的意思。 – CaptKirk

+0

'\t protected void destroyOnResume(){ \t \t SearchPage2.this.finish(); \t}'這是正確的嗎?如果是這樣,它似乎沒有在我的應用程序中做任何事情。 – CaptKirk

+0

編輯我的文章 - 它有幫助嗎? –