2012-04-21 16 views
0

請看看圖表:http://i.imgur.com/6FiGe.png在Android中組織活動。狀態。簡單?

我的應用程序的體系結構有一些問題。我有幾個活動/狀態,如果你到達他們,你是不允許回去的。這些是K,AX,所以當你到達他們並按回來按鈕,你會關閉我的應用程序。

這很容易與START活動。當我做一些工作來決定,如果我去ķ一個,我就跑START .finish(),這就是我想要的(在ķ一個活動是和按什麼後退按鈕關閉應用程序開始活動不再存在)。

該問題始於X狀態。該應用程序是像你需要fullfill 3個步驟,使你經歷:

[START] - > [ < - > < - >Ç] - > [X]上

這些要求的同時按下返回按鈕關閉應用

:顯示

Ç:秀乙

如果然後最終完成某種精靈(一個 - > - >Ç)你到達X如果你只按下按鈕,你關閉應用程序。

問題:應該如何完成()A,B,C以防止從X返回按鈕?我沒有參考使用。

回答

2

實現此目的的一種方法是在活動X中,按下自定義事件的後退按鈕觸發。

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     backPressed(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 

public void backPressed() 
{ 
    Globals.finished = true; 
    finish(); 
} 

你會發現上面的方法有行Globals.finished = TRUE;這指的是一個名爲Global的類,它帶有一個靜態(靜態可以在一個類上調用,而不必實例化一個對象)布爾變量叫做finished,最初設置爲false,如下所示。在我自己的應用程序中,我經常使用Globals類來分享整個應用程序通用的東西。您也可以使用共享偏好來做類似的事情。

public class Globals 
{ 
    public static finished = false; 
} 

然後在的onResume(或可能在onStart)所有活動的生命週期方法,你可以把下面的

if (Globals.finished == true) 
    finish(); 

這將導致所有的活動,立即關閉,但只有一次結束變量在全球化是真實的。我之前做過這件事,它工作得很好,並確保活動在關閉時調用其生命週期方法。

即使比這更簡單,您可以通過在ActivityX的onClose方法中設置Globals.finished = true來避免使用後退按鈕事件處理程序。

1

您需要撥打finish()回到您想要完成的活動中。使用startActivityForResult來幫助您back'n'finish過程

+0

嗨noHistory = 「真」 ......

示例代碼:

你可以添加機器人。謝謝你的答案。完成它們對我來說很清楚。但是我怎麼能完成A,B,C,因爲我沒有參考?這是我在Android中不太瞭解的。活動與Windows不一樣,因爲在其他GUI框架中,我引用了我的窗口,所以我可以做任何我想要的。現在我覺得活動掛在空中的某個地方,如果我只改變一個,我不能控制前面的活動。你會那麼和藹,寫得更加珍貴,你的意思是? – dbq 2012-04-22 00:04:34

0

您可以參考這個LINK。在活動A,B,C這是manifeast文件manifeast樣子

<activity android:label="string resource" android:name="activityA" android:noHistory="true" />