dialog的代码是一个登陆状态异常后弹出,让强制重新登录的弹窗:
AlertDialog.Builder builder = new AlertDialog.Builder( getActivity(), android.R.style.Theme_Holo_Light_Panel); builder.setMessage("登录异常,请点退出重新登录"); builder.setPositiveButton("退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog,int which) { Intent intent = new Intent(getActivity(),LoginActivity.class); startActivity(intent); } }); builder.setCancelable(false);//设置不可点击back关闭dialog builder.show();
然后还要写不让点击back的代码:
//重写back键当Dialog设置为builder.setCancelable(false);时back不执行 public boolean dispatchKeyEvent(android.view.KeyEvent event) { switch (event.getKeyCode()) { case KeyEvent.KEYCODE_BACK: { return false; } } return true; };
以上就是dialog不可点击back退出的代码
在写项目的时候遇到了activity启动多个,然后在后边的activity中需要一次性退出的问题。网上有说用
System.exit(0); 可以直接退出(没有去试验),也说用建立个活动管理器,将activity都装进去。在退出的时候遍历这个集合然后依次退出。我还没试过。正好很久没有写广播了,就试验了下用广播退出的方式
一下就是实现的代码:
在之前的activity中写接收广播的代码:
@Override protected void onResume() { super.onResume(); IntentFilter inFilter=new IntentFilter(); inFilter.addAction("finish");//接收的广播名称 registerReceiver(bReceiver, inFilter);
动态广播内部类:
//退出广播 private BroadcastReceiver bReceiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { finish(); } };
需要退出全部的呢个activity:
//我是写在了需要退出的这个activity的back按钮这里 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { // TODO Auto-generated method stub if (BaseConfig.quicklogin == 1) { Intent intent=new Intent(); intent.setAction("finish"); sendBroadcast(intent); } return super.onKeyDown(keyCode, event); }
这样在这个activity中。点击back的时候就直接退出了这个应用,而不是一层层返回。
时间: 2024-08-03 14:33:06