2012-01-11 67 views
1

我正在開發一個使用TabHost的應用程序。我正在使用android默認後退按鈕,通過在每個選項卡的ActivityGroup中重寫onBackPressed()方法,從當前活動移回到之前的活動。安卓後退按鈕Utilization Inside ActivityGroup

現在,問題是,在我的一個活動中,我有一個EditText,它在活動開始時得到集中。然後,如果我按回來,它不會去以前的活動,而是關閉應用程序。通過在互聯網上搜索問題,我發現,當EditText獲得焦點時,它是活動視圖的子視圖,活動損失焦點,然後如果後退按鈕被按下,由於缺乏對當前活動的關注,它會關閉應用。儘管如此,我仍然有點困惑,或者可以說不清楚這個問題。

因此,任何如何,我已設法設置和刪除使用代碼在運行時重點EditText。但現在仍然如此,因爲EditText沒有焦點,所以如果後退按鈕被按下,它將關閉應用程序。我真的很困惑實際發生了什麼。所以,如果有人對此問題有任何想法或解決方案,請在此問題上提供幫助。我會非常感激。謝謝。

回答

1

您可以通過添加關鍵監聽到你的EditText覆蓋此行爲。嘗試了這一點,

name_edit.setOnKeyListener(new OnKeyListener() { 

     public boolean onKey(View v, int keyCode, KeyEvent event) { 

      if (event.getAction() == KeyEvent.ACTION_DOWN 
        && event.getKeyCode() == KeyEvent.KEYCODE_BACK) { 
       Log.i("Back event Trigered", "Back event"); 
       activitygroup.back(); 
      } 
      return false; 
     } 
    }); 
+0

不工作。 :( – Junaid 2012-01-11 13:28:00

+0

可以粘貼你的代碼,它具有編輯文本。看到這通常發生在edittext和webview。看到你已經解決了一切與關鍵聽衆 – 2012-01-11 13:30:11

+0

好吧,在我的活動我宣佈了一些TextView,EditText和Button。對象使用findViewById()從XML佈局採取ID也設置onclicklistener的按鈕,多數民衆贊成在沒有別的,但仍然在做這個問題 – Junaid 2012-01-12 07:02:20

0

試試這個..

@Override 
    public void onBackPressed() { 
     onKeyDown(KeyEvent.KEYCODE_BACK, new KeyEvent(KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_BACK)); 
     super.onBackPressed(); 
    } 
+0

好了,我已經做了這樣的事情。後退按鈕在除了包含EditText的視圖之外的大部分活動中都能正常工作。正如我在網上搜索後對我的問題所說的那樣,它似乎是一個聚焦的問題。 – Junaid 2012-01-11 13:17:15

-1

試試這個

public void onBackPressed() { 

     startActivity(new Intent(currentActivity.this, previousActivity.class)); 
     finish(); 
    } 
+0

好,因爲我使用ActivityGroup爲TabHost內的每個選項卡,onBackPressed必須在父類(ActivityGroup)中實現而不是在子類(Activity)中。除此之外,startActivity(INTENT)不會在ActivityGroup中啓動活動。所以不能使用它。 – Junaid 2012-01-12 06:58:16