精华内容
下载资源
问答
  • Activity监听返回按键

    千次阅读 2016-06-13 15:37:23
    //定义一个全局变量  long time;... // 监听返回按键(重写activity方法)  public boolean onKeyDown(int keyCode, KeyEvent event) {  if (keyCode == KeyEvent.KEYCODE_BACK) {  if (System.curre

         //定义一个全局变量

         long time;

        // 监听返回按键(重写activity方法)

        public boolean onKeyDown(int keyCode, KeyEvent event) {

            if (keyCode == KeyEvent.KEYCODE_BACK) {
                if (System.currentTimeMillis() - time > 1500) {
                    Toast.makeText(this, "再按一次退出程序!", 0).show();
                    time = System.currentTimeMillis();
                } else {
                     //退出
                    System.exit(0);
                }
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }
    展开全文
  • activity监听返回键

    千次阅读 2016-06-08 13:10:54
    activity监听返回键

    通用方法

    @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
    
            if (keyCode==KeyEvent.KEYCODE_BACK&& event.getRepeatCount() == 0){
                //do something......
                return true;
            } else{
                return super.onKeyDown(keyCode, event);
            }
    
        }

    对应Android 2.0及以上的版本,可以使用onBackPressed()

    @Override
        public void onBackPressed() {
            super.onBackPressed();
        }
    展开全文
  • 监听返回键并退出所有Activity示例

    千次阅读 2013-10-03 00:50:34
    随时随地阅读更多技术实战...下面给出3个简单的Activity,并在它们之间跳转,如果想点击某个Activity返回键时就退出所有Activity,就只需监听Activity返回键即可。所有Activity都存放在一个集合里面,退出应用...

    随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、QQ技术交流群(183198395)。

    下面给出3个简单的Activity,并在它们之间跳转,如果想点击某个Activity的返回键时就退出所有Activity,就只需监听该Activity的返回键即可。所有Activity都存放在一个集合里面,退出应用时,只需遍历该集合并逐一finish掉。代码如下:

    MyAppalication:存放所有activity,提供添加activity和退出所有activity的方法

    package com.home.exitapp;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.app.Application;
    
    public class MyAppalication extends Application {
    	// 存放activity的集合
    	private ArrayList<Activity> list = new ArrayList<Activity>();
    	private static MyAppalication instance;
    
    	public MyAppalication() {
    	}
    
    	/**
    	 * 利用单例模式获取MyAppalication实例
    	 * 
    	 * @return
    	 */
    	public static MyAppalication getInstance() {
    		if (null == instance) {
    			instance = new MyAppalication();
    		}
    		return instance;
    	}
    
    	/**
    	 * 添加activity到list集合
    	 * 
    	 * @param activity
    	 */
    	public void addActivity(Activity activity) {
    		list.add(activity);
    
    	}
    
    	/**
    	 * 退出集合所有的activity
    	 */
    	public void exit() {
    		try {
    			for (Activity activity : list) {
    				activity.finish();
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		} finally {
    			System.exit(0);
    		}
    	}
    
    	@Override
    	public void onLowMemory() {
    		super.onLowMemory();
    		System.gc();
    	}
    }

    BaseActivity:抽象出添加activity的方法

    package com.home.exitapp;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    public class BaseActivity extends Activity {
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		MyAppalication.getInstance().addActivity(BaseActivity.this);
    	}
    
    }
    

    MyActivity1:

    package com.home.exitapp;
    
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MyActivity1 extends BaseActivity {
    	private Button btn_1_2;
    	private Button btn_1_3;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main1);
    		// MyAppalication.getInstance().addActivity(MyActivity1.this);
    		btn_1_2 = (Button) findViewById(R.id.main1_btn_1_2);
    		btn_1_3 = (Button) findViewById(R.id.main1_btn_1_3);
    		btn_1_2.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity1.this, MyActivity2.class);
    				startActivity(intent);
    			}
    		});
    
    		btn_1_3.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity1.this, MyActivity3.class);
    				startActivity(intent);
    			}
    		});
    	}
    
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
    			// return true;//返回真表示返回键被屏蔽掉
    			creatDialog();// 创建弹出的Dialog
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    
    	/**
    	 * 弹出提示退出对话框
    	 */
    	private void creatDialog() {
    		new AlertDialog.Builder(this)
    				.setMessage("确定退出app?")
    				.setPositiveButton("YES",
    						new DialogInterface.OnClickListener() {
    
    							@Override
    							public void onClick(DialogInterface dialog,
    									int which) {
    								MyAppalication.getInstance().exit();
    							}
    						})
    				.setNegativeButton("NO", new DialogInterface.OnClickListener() {
    
    					@Override
    					public void onClick(DialogInterface dialog, int which) {
    						dialog.dismiss();
    					}
    				}).show();
    	}
    }

    MyActivity2:

    package com.home.exitapp;
    
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MyActivity2 extends BaseActivity {
    	private Button btn_2_1;
    	private Button btn_2_3;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main2);
    		btn_2_1 = (Button) findViewById(R.id.main2_btn_2_1);
    		btn_2_3 = (Button) findViewById(R.id.main2_btn_2_3);
    		btn_2_1.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity2.this, MyActivity1.class);
    				startActivity(intent);
    			}
    		});
    
    		btn_2_3.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity2.this, MyActivity3.class);
    				startActivity(intent);
    			}
    		});
    	}
    
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
    			// return true;//返回真表示返回键被屏蔽掉
    			creatDialog();// 创建弹出的Dialog
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    
    	/**
    	 * 弹出提示退出对话框
    	 */
    	private void creatDialog() {
    		new AlertDialog.Builder(this)
    				.setMessage("确定退出app?")
    				.setPositiveButton("YES",
    						new DialogInterface.OnClickListener() {
    
    							@Override
    							public void onClick(DialogInterface dialog,
    									int which) {
    								MyAppalication.getInstance().exit();
    							}
    						})
    				.setNegativeButton("NO", new DialogInterface.OnClickListener() {
    
    					@Override
    					public void onClick(DialogInterface dialog, int which) {
    						dialog.dismiss();
    					}
    				}).show();
    	}
    }

    MyActivity3:

    package com.home.exitapp;
    
    import android.app.AlertDialog;
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.KeyEvent;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class MyActivity3 extends BaseActivity {
    	private Button btn_3_2;
    	private Button btn_3_1;
    
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main3);
    		btn_3_2 = (Button) findViewById(R.id.main3_btn_3_2);
    		btn_3_1 = (Button) findViewById(R.id.main3_btn_3_1);
    		btn_3_2.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity3.this, MyActivity2.class);
    				startActivity(intent);
    			}
    		});
    
    		btn_3_1.setOnClickListener(new OnClickListener() {
    
    			@Override
    			public void onClick(View v) {
    				Intent intent = new Intent(MyActivity3.this, MyActivity1.class);
    				startActivity(intent);
    			}
    		});
    	}
    
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
    			// return true;//返回真表示返回键被屏蔽掉
    			creatDialog();// 创建弹出的Dialog
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    
    	/**
    	 * 弹出提示退出对话框
    	 */
    	private void creatDialog() {
    		new AlertDialog.Builder(this)
    				.setMessage("确定退出app?")
    				.setPositiveButton("YES",
    						new DialogInterface.OnClickListener() {
    
    							@Override
    							public void onClick(DialogInterface dialog,
    									int which) {
    								MyAppalication.getInstance().exit();
    							}
    						})
    				.setNegativeButton("NO", new DialogInterface.OnClickListener() {
    
    					@Override
    					public void onClick(DialogInterface dialog, int which) {
    						dialog.dismiss();
    					}
    				}).show();
    	}
    }

    main1.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="I am the first activity"
            android:textSize="25sp" />
    
        <Button
            android:id="@+id/main1_btn_1_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到2" />
    
        <Button
            android:id="@+id/main1_btn_1_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到3" />
    
    </LinearLayout>

    main2.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#f000f0"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="I am the second activity"
            android:textSize="25sp" />
    
        <Button
            android:id="@+id/main2_btn_2_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到1" />
    
        <Button
            android:id="@+id/main2_btn_2_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到3" />
    
    </LinearLayout>

    main3.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00f0ff"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="I am the third activity"
            android:textSize="25sp" />
    
        <Button
            android:id="@+id/main3_btn_3_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到2" />
    
        <Button
            android:id="@+id/main3_btn_3_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳到1" />
    
    </LinearLayout>









     

    展开全文
  • activity里面监听返回键的方法

    千次阅读 2017-01-12 10:43:01
    这个监听和我上次发的早fragment的监听方法是一样的。 这个里我着重说明一下 不管你有多少个ativity,都可以使用这个方法来监听,互不冲突。... 用了之后他就没有返回效果。所以这里我把他注释了。

        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN) {
                if (keyCode == KeyEvent.KEYCODE_BACK) { //表示按返回键 时的操作
                    // 监听到返回按钮点击事件
    
                    Messenger messenger=getIntent().getParcelableExtra("handler");
                    Message message=new Message();
                    message.what=10;
                    try {
                        messenger.send(message);
                    } catch (RemoteException e) {
                        e.printStackTrace();
                    }
                    //exit();
                  //  finish();
    
                  //  return true;    //已处理
                }
            }
            return super.onKeyDown(keyCode, event);
        }




    这个监听和我上次发的fragment的监听方法是一样的。

    这个里我着重说明一下   不管你有多少个ativity,都可以使用这个方法来监听,互不冲突。这个方法在方法里面的 不能使用 return true。 用了之后他就没有返回效果。所以这里我把他注释了。

    展开全文
  • @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view... //监听返回键 getView().setFocusableInTouchMode(true); getView().requestFocus(); get.
  • Android监听返回按键以及Home按键

    万次阅读 2018-06-05 15:56:17
    HomeKeyReceiver receiver;receiver = new ...// 注册监听HOME的广播 mParent.registerReceiver(receiver, new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); mParent.unregisterReceiver(receiver...
  • 如果你想使用ActivityGroup来统一管理Activity的话,当然首先这是一种很好的方法,但是如果你想在ActivityGroup里面拦截返回按键来进行统一管理的话,直接覆写onKeyDown方法是行不通的了哦,但是你可以覆写...
  • 获取到当前commit的Fragment判断当前Fragment是否是我们需要监听返回键的Fragment。如果是,就调用Fragment中的相应自定义方法,并返回true;如果不是就返回super.onKeyDown(keyCode, event),注意这里不要直接返回...
  • 前提: public class TestActivity extends Cocos2dxActivity { ... public boolean onKeyDown( int keyCode, KeyEvent event) {// 监听不到 原因: Called when a key was pressed down and
  • 当你的Activity 已经显示了Dialog时候. 通过重写onKeyDown,onBackPressed,dispatchKeyEvent方法都是无法监听返回键事件的:
  • Fragment中监听返回键

    千次阅读 2015-06-15 11:36:59
    有些时候在Activity监听返回键,但此Activity中的Fragment并不想返回键实现同样的功能,所以需要Fragment中监听返回键。令人失望的是Fragment并不能直接对物理返回键进行监听,所以需要自己另外去进行代码实现。...
  • 我用activity 和tabhost配套使用,当监听返回键时跳转到tabhost主页,发现选项卡消失,不只是为什么?求各位大神解答?谢谢!
  • 有些情况下,我们需要让Fragment也监听返回键
  • android activity返回键监听

    千次阅读 2017-02-15 16:29:22
    两个方法: @Override  public boolean onKeyDown(int keyCode, KeyEvent event) {  // TODO Auto-generated method stub  switch (keyCode) {  case KeyEvent.KEYCODE_BACK:  
  • 在Fragment中监听返回键

    千次阅读 2017-08-30 15:22:45
    最近在做项目的时候,遇见这么一个需求,需要在Fragment中监听返回键,点击返回键的时候做一些处理。如图所示:当我需要处理fragment的返回事件时,我先处理fragment中的逻辑,不需要时,直接交给activity处理即可。...
  • 在Activity,Service,Window中监听Home键和返回键的一些思考...一.Activity监听返回键 这个其实大家都知道,首先我们要了解流程,你要屏蔽这个返回键,那你就要拿到这个返回键的事件了,所以我们要监听了,而在Activ
  • Fragment监听返回键

    2016-11-16 15:06:37
    官方在Fragment中没有定义返回键监听,有时候我们需要在Fragment中监听返回键,字节定义接口回掉是一种比较简单的方法 定义一个接口 OnxxListener 接口中的方法 onXxx() public interface OnBackPressedListener {...
  • 在Fragment不仅仅只可以监听返回键哦,所有你见过的按键都可以监听,什么A~Z,0~9,F1~F12等等我就不举例子了。至于为什么写这篇博客,因为我的项目是一个Activity+多个Fragment架构的,下面进入正题。。。。直接上...
  • fragment监听返回键

    2018-04-19 12:07:33
     以往在activity监听返回键我们都是使用onKeyDown来监听,但是在fragment中没有这个方法那么我们应该怎么实现对返回键监听了,今天就为大家介绍一个方法可以用来监听fragment的返回键。首先我们定义一个借口...
  • Activity监听或拦截返回键 重写dispatchKeyEvent()方法 @Override public boolean dispatchKeyEvent(KeyEvent event) { if(event.getKeyCode()==KeyEvent.KEYCODE_BACK){ Log.d("ansen", "KEY
  • 可以在Activity中重写onKeyDown或者onKeyUp来监听按键,以监听返回键弹起为例 @Override public boolean onKeyUp(int keyCode, KeyEvent event) { //监听返回键 if(keyCode == KeyEvent.KEYCODE_BACK){ Log.e...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,943
精华内容 8,777
关键字:

activity监听返回按键