异步加载进度条,屏蔽搜索键

当进行耗时的操作时,就会写个进度条在界面上运行。但是按返回键,搜索键时,进度条会消失,但是耗时的操作还在进行中,怎么办呢?


进度条:ProgressDialog dialog;

1. 异步加载进度条屏蔽返回键很简单,只要设置dialog.setCancelable(false);即可。

2. 可是屏蔽搜索键没有现成的东西。
想法一,重写onKeyDown函数:

Java代码
  1. 定义个boolean boo = flase,在耗时操作中设置 boo = true;操作完成设置boo = flase;
  2. 重写onKeyDown:
  3. public boolean onKeyDown(int keyCode, KeyEvent event) {
  4. switch (keyCode) {
  5. case KeyEvent.KEYCODE_SEARCH: {
  6. if(boo){
  7. return true;
  8. }else{
  9. break;
  10. }
  11. }
  12. return super.onKeyDown(keyCode, event);
  13. }

 

运行发现此法不可行,按搜索键,搜索功能屏蔽了,但进度条还是消失了。


原来异步加载进度条后,进度条获取了焦点,而onKeyDown是屏幕的,不是进度条的。so

Java代码
  1. dialog.setOnKeyListener(new DialogInterface.OnKeyListener(){
  2. public boolean onKey(DialogInterface dialog, int keyCode,KeyEvent event) {
  3. if (keyCode == KeyEvent.KEYCODE_SEARCH) {
  4. return true;
  5. }
  6. return false;
  7. }
  8. });

 

即可。

你可能感兴趣的:(java,search,dialog)