首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以覆盖我的应用程序中的“主页”按钮吗?

我可以覆盖我的应用程序中的“主页”按钮吗?
EN

Stack Overflow用户
提问于 2011-04-05 13:57:23
回答 5查看 39.5K关注 0票数 18

我想在我的android上创建我自己的主屏幕,我想在我的应用程序中调用那个主屏幕。

我如何才能覆盖“主页”按钮,以便当它被按下时,应用程序将被重定向到我的主屏幕,而不是默认的主屏幕?是否可以覆盖主页按钮?

EN

回答 5

Stack Overflow用户

发布于 2011-12-20 21:47:57

覆盖下面的方法。

代码语言:javascript
复制
@Override
public void onAttachedToWindow()
{  
    Log.i("TESTE", "onAttachedToWindow");
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();  
}

使用此方法,主页按钮将在此活动(仅此活动)中停止工作。然后,您只需重新实现它,就像它是一个普通的按钮事件一样(例如后退按钮)。

代码语言:javascript
复制
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME) {
        Log.i("TESTE", "BOTAO HOME");
        return true;
    }
    return super.onKeyDown(keyCode, event);    
}
票数 12
EN

Stack Overflow用户

发布于 2012-07-04 18:32:42

AndroidManifest.xml

代码语言:javascript
复制
<activity
    ...
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
        ....
    </intent-filter>
</activity>

您需要launchMode="singleTask",以便将意图传递给已在运行的应用程序,而不是创建新实例。

在本练习中:

代码语言:javascript
复制
   @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        if (Intent.ACTION_MAIN.equals(intent.getAction())) {
            Log.i("MyLauncher", "onNewIntent: HOME Key");

        }
    }

你不会得到一个关键事件

票数 11
EN

Stack Overflow用户

发布于 2011-04-05 14:11:56

home按钮应该只做一件事,而且是始终如一的。让用户返回到主屏幕。即使你可以覆盖它的行为,这也是一件非常不友好的事情。所以不要这样做,以不同的方式解决你的问题!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5547818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档