【问题标题】:need help in Home Button in android在android的主页按钮中需要帮助
【发布时间】:2011-05-19 05:42:15
【问题描述】:

大家好,我想拦截我的主页按钮。
我想要的是,每当我按下主页按钮时,我都想显示一个警报对话框,提示您确定要退出。如果是,则完成活动,否则什么也不做。 我必须知道
每当我们按下 Home 按钮时,都会按顺序执行以下回调。

onSaveInstanceState(Bundle outState)

onPause()

onStop()

所以我有 overRide onSaveInstanceState 方法并在那里设置我的警报对话框代码,但它给了我对话框异常。请朋友帮忙。指导我一点……关于它。

更新:

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
boolean flag = displayAlertDialog();
        if(flag){
             this.finish();
         super.onSaveInstanceState(savedInstanceState);
        }
}  

displayAlertDialog 方法:

private boolean isExit = false;
public boolean displayAlertDialog()
    {
        //final boolean flag=true;
        int a = 0;
        AlertDialog.Builder alt_bld = new AlertDialog.Builder(this);
        alt_bld.setMessage("Are you sure you want to Exit?")
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = true;
            }

        })
        .setNegativeButton("No", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                isExit = false;
                dialog.cancel();
            }
        });
        alt_bld.show();
    return isExit;

    }

【问题讨论】:

  • 你应该描述你的代码以获得其他人的帮助

标签: android onkeydown android-homebutton


【解决方案1】:

您无法在主页按钮上打开对话框。但是您可以通过用户选择主页或您的活动等操作来打开主页按钮上的任何活动..

【讨论】:

  • 没有。当我们按下 Home 键时,不会触发 onKeyDown。我已经检查过了。
  • 是的,它在 Back Key 上工作,但每当我按 Home 时。 onKeyDown 不会诱发。
  • 兄弟它甚至没有进入 onKeyDown 方法。 onKeyDown 不诱发。在主页按钮上:(这就是问题老兄
  • 哦,所以你不能直接在主页上打开对话框,但是可选的,比如用户可以选择主页或对话框..
  • 请用你的知识帮助兄弟..我必须拦截主页按钮
【解决方案2】:

当 HOME 键被按下时,AFAIK KeyCode.KEYCODE_HOME 永远不会传播到 Activty/Dialog,HOME 键在框架中被截获,以保证为“android.intent.category.HOME”注册的主屏幕/活动始终成为焦点。

如果允许在应用程序中拦截 HOME 键,则恶意应用程序可能会阻止用户退出应用程序并使用手机功能。

【讨论】:

    【解决方案3】:

    试试这个伙伴....

     @Override 
        public boolean onKeyDown(int keyCode, KeyEvent event) { 
            if ((keyCode == KeyEvent.KEYCODE_HOME)) {    
             Log.d(this.getClass().getName(), "home button pressed");   
          }  
           return super.onKeyDown(keyCode, event);
         } 
    

    【讨论】:

      猜你喜欢
      • 2020-11-12
      • 2011-08-18
      • 1970-01-01
      • 2019-05-09
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 2011-09-02
      相关资源
      最近更新 更多