我如何在 MaintabActivity 中收听 BACK 键按下(包含 2 个子选项卡活动)

发布于 2024-11-18 23:35:41 字数 818 浏览 4 评论 0原文

公共类 MyTab 扩展 TabActivity;

公共类 SubTab 扩展 TabActivity;

MyTab 中定义了 2 个选项卡:

  1. setContent(new Intent(this, SubTab.class))
  2. setContent(R.id.view1)

然后在 MyTab 中编写一个方法:

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        Log.i("MyTab Back", "In MyTab ");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

和 SubTab 中的方法,只需更改为 Log.i("SubTab返回”、“在子选项卡中”)。

问题: 在子选项卡中按返回键,Logcat 中仅显示“在子选项卡中”。

删除子选项卡中的方法,然后按返回键 Logcat 中不显示任何内容。

在另一个选项卡(不是活动)中按返回键,Logcat 中仅显示“In MyTab”。

现在,我只想编写一个方法来监听 MyTab 中的 Back Keydown ,因为在另一个项目中, mainTab 有超过 3 个 subtabActivity 。

public class MyTab extends TabActivity;

public class SubTab extends TabActivity;

There is 2 tab defined in MyTab :

  1. setContent(new Intent(this, SubTab.class))
  2. setContent(R.id.view1)

Then write a method in MyTab :

public boolean onKeyDown(int keyCode, KeyEvent event)  {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
        Log.i("MyTab Back", "In MyTab ");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

and the method in SubTab ,just change to Log.i("SubTab Back", "In SubTab ").

Problem:
Press Back Key in SubTab,Only "In SubTab" is shown in Logcat.

Delete the method in SubTab,then press Back Key nothing is shown in Logcat.

Press Back Key in another tab (not Activity), Only "In MyTab" is shown in Logcat.

NOW, I want to just write a method to listen Back Keydown in MyTab, because of in another project, the mainTab have more than 3 subtabActivity 。

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

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

发布评论

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

评论(2

枉心 2024-11-25 23:35:41

尝试以下操作:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        Log.i("MyTab Back", "In MyTab ");
    }
    return super.dispatchKeyEvent(event);
}

try the following:

@Override
public boolean dispatchKeyEvent(KeyEvent event) {
    if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        Log.i("MyTab Back", "In MyTab ");
    }
    return super.dispatchKeyEvent(event);
}
稀香 2024-11-25 23:35:41

试试这个:

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.i("MyTab Back", "In MyTab ");
        return true;
    }
    return false;
}

try this :

public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.i("MyTab Back", "In MyTab ");
        return true;
    }
    return false;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文