【问题标题】:Android Back Button Utilization Inside ActivityGroupAndroid 后退按钮在 ActivityGroup 中的使用
【发布时间】:2012-01-11 13:03:49
【问题描述】:

我正在使用 TabHost 开发应用程序。我正在使用 android 默认后退按钮通过覆盖每个选项卡的 ActivityGroup 内的 onBackPressed() 方法从当前活动移回上一个活动。

现在,问题是,在我的一项活动中,我有一个 EditText,它在活动开始时获得焦点。然后,如果我按返回,它不会转到上一个活动,而是关闭应用程序。通过在互联网上搜索问题,我发现当 EditText 获得焦点(这是活动视图的子视图)时,活动失去焦点,然后如果按下后退按钮,由于缺乏对当前活动的关注,它会关闭应用。我仍然有点困惑,或者说不清楚这个问题。

所以,无论如何,我已经设法使用代码在运行时设置和移除 EditText 的焦点。但是现在,由于 EditText 没有焦点,如果按下后退按钮,它会关闭应用程序。我真的很困惑到底发生了什么。所以,如果有人对这个问题有任何想法或解决方案,请帮助解决这个问题。我会非常感激的。谢谢。

【问题讨论】:

    标签: android view focus back-button activitygroup


    【解决方案1】:

    您可以通过将 Key Listener 添加到 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;
            }
        });
    

    【讨论】:

    • 你能粘贴你的代码吗?看到这通常发生在edittext和webview中。确保您已通过关键听众解决了所有问题
    • 好吧,在我的 Activity 中,我声明了一些 TextView、EditText 和 Button。使用 findViewById() 从 xml 布局中获取 id 创建的对象。还为按钮设置 onclicklistener ,就是这样。没有其他的。但仍然在做这个问题。
    • 这是我通常为我的 ActivityGroup 做的事情。这个对我有用。对不起,如果没有帮助你。请仔细检查您的代码。
    • 糟糕!我的错。它实际上工作。我忘记更改之前为更改焦点而编写的一些代码。为此,它不起作用。在您提出建议并发现该问题后,我重新检查了我的代码。使它们正确后,一切正常。非常感谢您的帮助... :D 我真的很感激 .... :) 顺便说一句,另外一件事,WebView 中是否会出现同样的问题??
    • 是的。特别是带有轨迹球的设备。玩安全。永远欢迎你
    【解决方案2】:

    试试这个..

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

    【讨论】:

    • 好吧,我做过这样的事情。后退按钮在大多数活动中都能正常工作,除了那些视图包含 EditText 的活动。正如我在网上搜索后对我的问题所说的那样,它似乎是一个焦点问题。
    【解决方案3】:

    试试这个

     public void onBackPressed() {
    
          startActivity(new Intent(currentActivity.this, previousActivity.class));
            finish();
        }
    

    【讨论】:

    • 好吧,我在 TabHost 中的每个选项卡都使用 ActivityGroup,onBackPressed 必须在父类 (ActivityGroup) 中实现,而不是在子类 (Activity) 中实现。此外,startActivity(INTENT) 不会在 ActivityGroup 中启动活动。所以不能用那个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-18
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多