2013-08-02 97 views
1

我無法弄清楚如何處理Activity Flow。在Android中攔截返回鍵值

我在我的android應用程序中有2個活動和1個視圖類。

主要活動 - >子活動 - >視圖類(我從主活動類調用子活動,並在子活動中,我實例化視圖類)。

但是當我在View Class中按下按鈕時,它將返回到主活動。

視圖類(後退按鈕按下) - >主要活動

但我希望的行爲是這樣的:視圖類(後退按鈕按下) - >子活動 - >主要活動)。

請指導我該怎麼做。

在此先感謝。

+0

有多少活動? 2或3? – Karakuri

+0

2活動..主要和次要活動..第三個是視圖類(擴展視圖) – Hassan

回答

1

好的,您可以在子活動中聆聽關鍵事件。像這樣:

public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK&&your view is not close) { 
      closeyourview(); 
      return true;// important you can close your view here 
     } 

    return super.onKeyDown(keyCode, event); 
} 
+0

如何檢查視圖是否關閉? – Hassan

+0

你可以把邏輯放在你自己的視圖中,比如放一個成員變量來記錄;或者試試這個:View.getVisibility()來判斷狀態 – MengMeng

3

活動有onBackPressed()回調方法。您可以重寫此操作,但如果您不打算以特殊方式操作,請務必致電super.onBackPressed(),以便活動最終能夠正常退出。

@Override 
public void onBackPressed() { 
    if (/* ... */) { 
     // do something special 
    } else { 
     super.onBackPressed(); 
    } 
} 
+0

如果按下返回鍵,我想關閉視圖。我該怎麼做 ? – Hassan

+0

這是你的看法和你的代碼。添加一些邏輯來確定視圖是否「打開」 - 它可以是視圖本身的一部分,或者活動可以跟蹤視圖。這將是'if'陳述的條件。在裏面,你可以做任何你需要「關閉」視圖。 – Karakuri

0

我不確定View Class是什麼意思。也許你可以使用新的活動來顯示視圖,然後一切都會好的。

+0

查看班級意味着 - > someCustomImageLoad擴展查看{}。當我從我的子活動中調用它時,它覆蓋整個屏幕,用戶可以放大或縮小位圖。 – Hassan

+0

如果它需要整個屏幕,爲什麼不爲此獲得新的活動? –