TabActivities 中的关键事件?

发布于 2024-08-31 15:31:05 字数 406 浏览 2 评论 0原文

我有一个 TabActivity,想要捕获并处理 HOME 和 BACK 的按下。我需要在哪里捕捉这些事件?

在我的 TabActivity 子类中,我实现了以下内容:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        // Code handling
    }

    return super.onKeyDown(keyCode, event);
}

不起作用。

所以我在 switch 语句行上放置了一个断点。但无论我按音量增大/减小、菜单、主页还是返回,此函数都永远不会被调用。我需要在哪里捕获这些关键事件?

I have a TabActivity and want to catch and handle presses of HOME and BACK. Where do I need to catch these events?

In my subclass of TabActivity I implement the following:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    switch (keyCode) {
        // Code handling
    }

    return super.onKeyDown(keyCode, event);
}

Didn't work.

So I placed a breakpoint on the switch statement line. But this function never gets called, whether I press volume up/down, menu, home, or back. Where do I need to catch these KeyEvents?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

青巷忧颜 2024-09-07 15:31:05

事实证明这很容易。将以下代码添加到您的子选项卡活动中:

 @Override
  public void onBackPressed() {
    this.getParent().onBackPressed();   
  }

然后在 TabActivity 中执行真正的逻辑:

 @Override
  public void onBackPressed() {
    // Called by children
  }

否则,子项将拦截并使用该事件而不通知选项卡主机。

It turns out to be pretty easy. Add the following code to your child tab activity :

 @Override
  public void onBackPressed() {
    this.getParent().onBackPressed();   
  }

Then in the TabActivity do the real logic:

 @Override
  public void onBackPressed() {
    // Called by children
  }

Otherwise, the children will intercept and consume the event without notifying the tab host.

剩一世无双 2024-09-07 15:31:05

我遇到了同样的问题,发现重写dispatchKeyEvent 有效。

可以在此处找到按后退按钮的示例:

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys- Three-stories.html

I had the same issue and found overriding dispatchKeyEvent worked.

An example of which can be found here for back button press:

http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

清风挽心 2024-09-07 15:31:05

每个选项卡的活动处理“后退”按下。

Each tab's Activity handled the "back" presses.

樱花坊 2024-09-07 15:31:05

我有一个 TabActivity 并想要捕获
并处理 HOME 和 BACK 按键。
我需要在哪里捕获这些事件?

你永远无法“处理回家的新闻”。

对于 BACK,您可以使用 onKeyDown()(适用于 Android 1.x)或 onBackPressed()(适用于 Android 2.x)。但是,您的 TabActivity 可能为时已晚。例如,如果您将活动作为选项卡的内容,则其中之一可能正在捕获 BACK 按键并安排正常处理(即关闭活动)。由于我避免像瘟疫一样将活动作为选项卡(除了一本书的示例),因此我没有在这种情况下尝试过“后退”按钮处理。

I have a TabActivity and want to catch
and handle presses of HOME and BACK.
Where do I need to catch these events?

You cannot "handle presses of HOME", ever.

With respect to BACK, you can use onKeyDown() (for Android 1.x) or onBackPressed() (for Android 2.x). However, your TabActivity may be too late. For example, if you have activities as the contents of your tabs, it may be that one of them is catching the BACK press and arranging for normal processing (i.e., closing up of the activity). Since I avoid activities-as-tabs like the plague (except for one book example), I have not experimented with BACK button processing in that scenario.

蓝海似她心 2024-09-07 15:31:05

在您的 oncreate() 中尝试一下

setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_GLOBAL);

try this in your oncreate()

setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
setDefaultKeyMode(DEFAULT_KEYS_SEARCH_GLOBAL);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文