2012-03-23 4 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を使っ

@Override 
public void onBackPressed() { 
if(!lock) { 
//back action 
} 
} 

ボタンバックdoInBackgroundでバックアクションがない、押されたが、progDailogが却下された場合。 これを回避するにはどうすれば修正できますか?

答えて

5

あなたは私はあなたがAsyncTaskのバックグラウンド・プロセスを中断したくないと確信しているハードウェア、バックキーボタン

5

をバックロックするprogDailog.setCancelable(false);を呼び出すことができます。だからコードごとに、私はあなたのコードでいくつかの変更を行うことを提案することができますので、ダイアログボックスは、あなたが戻ってキーを押してもそこに残ります。

progDailog.setCancelable(false); 
3

を無効にするために、あなたのダイアログの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; 

}

:あなただけでキャンセルできないとして、あなたのダイアログボックスを設定する必要が

関連する問題