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的时候就直接退出了这个应用,而不是一层层返回。