Android中如何点返回键返回主页面,在主页面中点返回键弹出退出框?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android中如何点返回键返回主页面,在主页面中点返回键弹出退出框?相关的知识,希望对你有一定的参考价值。
android中如何点返回键返回主页面,在主页面中点返回键弹出退出框?
现在是如论在哪个页面都会跳出退出框,主页面是activity_main。如何该wv.cangoback
这个部分?
public boolean onKeyDown(int keyCode,KeyEvent event)
if(keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() ==0)
dialog();
return true;
if((keyCode == KeyEvent.KEYCODE_BACK)&& wv.canGoBack())
wv.goBack();
return true;
return super.onKeyDown(keyCode, event);
protected void dialog()
AlertDialog.Builder builder = new Builder(MainActivity.this);
builder.setMessage("确定要退出吗?");
builder.setMessage("提示");
builder.setPositiveButton("确认",
new android.content.DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// TODO 自动生成的方法存根
dialog.dismiss();
android.os.Process.killProcess(android.os.Process.myPid());
);
builder.setNegativeButton("取消",
new android.content.DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
// TODO 自动生成的方法存根
dialog.dismiss();
);
builder.create().show();
public boolean onKeyDown(int keyCode, KeyEvent event)
if (keyCode == KeyEvent.KEYCODE_BACK)
dialog();
return false;
else
return super.onKeyDown(keyCode, event);
追问
这个我知道,就是第二个页面按返回也是会弹出退出框,是不是继承的问题,2个页面都是继承了activity。第二个页面应该继承什么
参考技术B public void onBackPressed()// super.onBackPressed();
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("关闭").setMessage("是否确定关闭").setPositiveButton("确定", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
finish();
).setNegativeButton("取消",null);
builder.create().show();
主页面写成这个可不吗? 参考技术C 你只需要把这个方法放在你的主页面就好啊,追问
我是放在主页面的呀
Android 11.0 实现组合键 FN + CTRL,返回主页面
△注意:这里有一个坑点。功能我们Framework这边是实现了,但是有时候Ctrl+FN一旦组合使用后,会导致其他按键不正常,经排查是由于Ctrl键一直处于锁定状态(按下状态),为什么呢?我可以告诉你,这是驱动上报事件写的问题,因为我不知道驱动已经写好了这样的事件,导致自己写了一个估计与他们产生了冲突,只要是组合键他只会上报CTRL+FN的组合键值,并不会上报给我CTRL和FN的单个键值,所以导致我们FW层这边的逻辑被打乱没有接收到按键的松开事件,所以就会一直处于按下的状态。
总结:组合键开发时,建议FW工程师来做组合键功能会更好,这样就不会打乱上层正常接收事件的逻辑。
frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
//wangrui FN + CTRL key combination status flag
++ private boolean flag2 = false;
public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
int policyFlags)
//wangrui FN + Ctrl key combination status flag
++ if (down)
++ if (keyCode == KeyEvent.KEYCODE_UNKNOWN)
++ flag2 = true;
++ else if (flag2)
++ int keyValue = event.getKeyCode();
++ if (keyValue == KeyEvent.KEYCODE_CTRL_LEFT || keyCode == KeyEvent.KEYCODE_CTRL_RIGHT)
++ Intent intent1=new Intent("xxx.allApp");
++ intent1.putExtra("COMPOSITION",1);
++ mContext.sendBroadcast(intent1);
++ return 0;
++
++
++ else
++ if (keyCode == KeyEvent.KEYCODE_UNKNOWN)
++ flag2 = false;
++
++
packages/apps/Launcher3/src/com/android/launcher3/Launcher.java
// wangrui Receive "☰" key broadcast, realize pop-up application and return to homepage
private final BroadcastReceiver myReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
android.app.ActivityManager am = (android.app.ActivityManager) getSystemService(ACTIVITY_SERVICE);
android.content.ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
if ("AllApps".equals(getStateManager().getState().toString()) || (!"com.android.launcher3".equals(cn.getPackageName())))
intent= new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
else
+ //wangrui If it is a combination key, nothing will be done
+ if (!(1==intent.getIntExtra("COMPOSITION",0)))
+ getStateManager().goToState(ALL_APPS);
+
+
;
我是王睿丶,加入我的Q群:901440630,欢迎一起讨论安卓技术!
以上是关于Android中如何点返回键返回主页面,在主页面中点返回键弹出退出框?的主要内容,如果未能解决你的问题,请参考以下文章
Android 按键 添加组合键 FN + CTRL,使屏幕返回主页面
android 在一个Activity 中按下返回键,不结束这个Activity 而是返回上个页面,如何实现?
当 API 调用完成时,如何从 .RAZOR 主页面中的所有子组件触发/刷新我的主 .RAZOR 页面?