2012-03-23 3 views
0

데이터 처리 중에 버튼을 잠그고 싶습니다. 버튼을 다시 잠그는 방법

class Process extends AsyncTask<String, String, String> { 
@Override 
protected void onPreExecute() { 
super.onPreExecute(); 
progDailog = new ProgressDialog(ShareFolderActivity.this.getParent()); 
progDailog.setMessage("Loading..."); 
progDailog.setIndeterminate(false); 
progDailog.setMax(100); 
progDailog.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
progDailog.setCancelable(true); 
progDailog.show(); 
lock = true; 
} 
@Override 
protected String doInBackground(String... aurl) { 
//process 
return null; 
} 
@Override 
protected void onPostExecute(String unused) { 
super.onPostExecute(unused); 
PostLoad(); 
progDailog.dismiss(); 
lock = false; 
} 
} 

그리고 아래

onBackPressed() : 나는 다음과 같이 데이터를 처리하는 AsyncTask를를 사용 doInBackground에서 다시 버튼을 누를 때
@Override 
public void onBackPressed() { 
if(!lock) { 
//back action 
} 
} 

가, 후면 작업을하지를하지만, progDailog은 기각. 수정하지 못하게하려면 어떻게 수정해야합니까?

답변

5

당신은 버튼을

5

를 다시 잠글 progDailog.setCancelable(false);를 호출 할 수 있습니다 당신은 하드웨어 백 키 버튼을 사용하지 않도록 대화를위한 progDailog.setCancelable(false);을 설정해야

3

난 당신이 AsyncTask를 백그라운드 프로세스를 방해하고 싶지 않아 확신합니다. 그래서 귀하의 코드 당, 나는 귀하의 코드에서 일부 수정을 제안 할 수 있도록 귀하의 대화 상자는 심지어 당신이 뒤로 키를 눌러 남아있을 것입니다.

progDailog.setCancelable(false); 
1
@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (Integer.valueOf(android.os.Build.VERSION.SDK) < 7 
     //Instead use android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.ECLAIR 
     && keyCode == KeyEvent.KEYCODE_BACK 
     && event.getRepeatCount() == 0) { 
    // This may not work on older versions of platform where it doesn't exist. 
    onBackPressed(); 
    } 
    return super.onKeyDown(keyCode, event); 
    } 
@Override 
public void onBackPressed() { 

return; 

}

:

당신은 단지에 의해로하지 취소 가능하여 대화 상자를 설정해야