Android Activity返回键控制的两种方式

1.覆写Activity的OnBackPressed方法

官方解释:

Called when the activity has detected the user‘s press of the back key.

The default implementation simply finishes the current activity, but you can override this to do whatever you want.

@Override
public void onBackPressed() {
       // 完全由自己控制返回键逻辑,系统不在控制,但是有个前提是不要在Activity的onKeyDown或者OnKeyUp中拦截掉返回键

// 拦截:就是在OnKeyDown或者OnKeyUp中自己处理了返回键(这里处理之后return true.或者return false都会导致onBackPressed不会执行)

// 不拦截:在OnKeyDown和OnKeyUp中返回super对应的方法(如果两个方法都被覆写就分别都要返回super.onKeyDown,super.onKeyUp)
}

2、覆写Activity的onKeyDown或者OnkeyUp,拦截返回键
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyCode.KEYCODE_BACK) {
                return isCosumenBackKey();
        }
        return false;
}

private boolean isCosumenBackKey() {
        // 这儿做返回键的控制,如果自己处理返回键逻辑就返回true,如果返回false,代表继续向下传递back事件,由系统取控制
        return true;
}

举例:以下代码不会走到onBackPressed (在一个Activity中同时覆写下面三个方法)

@Override
public void onBackPressed() {
         
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (keyCode == KeyCode.KEYCODE_BACK)
                return false;
        return false;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyCode.KEYCODE_BACK)
                return super.onKeyDown(keyCode, event);
        return false;
}

时间: 2024-08-09 10:26:23

Android Activity返回键控制的两种方式的相关文章

Android 监听返回键退出程序的两种实现

1.Android 双击返回键退出程序 思路:用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定时器是每次用户按下返回键才去创建. 代码如下: /** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if(keyC

Android提交数据到服务器的两种方式四种方法

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法. /** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @p

Android解析XML文档的两种方式的简单对比

Android之所以会用到解析XML文档,不仅与JAVA对XML的解析比较简单,而且还因为XML是Android在网络间传递信息的主要存储方式.下面我简单谈谈Android对XML文档解析的两种方式:dom和sax.dom解析方式是,解析方法将一个XML文件看成是一棵树.由数据结构的知识我们知道对树的处理比较简单,就是对树的节点进行增,删,改,查,这也是dom的一个最大优点.但是,dom方式在解析的时候是一次性就将整个XML文档读进内存,这坏处不用我说了吧,我宝贵的内存是禁不起这么折腾的. sa

Asp.net Web API 返回Json对象的两种方式

这两种方式都是以HttpResponseMessage的形式返回, 方式一:以字符串的形式 var content = new StringContent("{\"FileName\": \"" + fileName + "\"}"); HttpResponseMessage response = new HttpResponseMessage() { Content = content }; response.Content

android studio学习---签名打包的两种方式

注:给我们自己开发的app签名,就代表着我自己的版权,以后要进行升级,也必须要使用相同的签名才行.签名就代表着自己的身份(即keystore),多个app可以使用同一个签名. 如果不知道签名是啥意思,请自行百度哦.在eclipse中签名的方法是:选中工程,邮件选择"export-android-export android application", 1.方式1:通过Android Studio进行签名: 选中app这个module,选择菜单栏"Build-Generate

Android 给layout设置动画的两种方式

public class MainActivity extends Activity { LinearLayout layout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); layout = (LinearLayout) findViewById(R.id.layout); lay

Android Activity实现切换动画的两种方法

方法一 overridePendingTransition(0,0) void android.app.Activity.overridePendingTransition(int enterAnim, int exitAnim) Call immediately after one of the flavors of startActivity(Intent) or finish to specify an explicit transition animation to perform ne

Android之发送短信的两种方式

第一:调用系统短信接口直接发送短信:主要代码如下:  /** * 直接调用短信接口发短信 * * @param phoneNumber * @param message */ public void sendSMS(String phoneNumber, String message) { // 获取短信管理器 android.telephony.SmsManager smsManager = android.telephony.SmsManager .getDefault(); // 拆分短信

android 文本框不获取焦点的两种方式

当进入一个页面以后,我们不希望EditText获取焦点自动弹出软键盘,占据大半个屏幕. 方法一 让LinearLayout率先获取焦点,代码如下: <LinearLayout android:focusable="true" android:focusableInTouchMode="true" android:layout_width="0px" android:layout_height="0px"/> 方法二