2012-01-11 71 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