ダイアログ ボックスで [OK] を押した後、別の場所からデータを取得する必要があります。だから私は Asynctask クラスを使用しました。実装は以下。しかし、最初に [OK] を押した後、進行状況バーが表示されません。2番目のokが押された後にのみ取得します(基本的に、ボタンのonClickメソッド内のすべての行が実行されたとき...最初のokを押した直後にプログレスバーを取得するにはどうすればよいですか?
confirmPath= (Button) findViewById(R.id.confirmPath);
confirmPath.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
construction
AlertDialog.Builder builder = new AlertDialog.Builder(Destination.this);
builder.setMessage("Press 'Ok' ")
.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
LoadData task = new LoadData();
task.execute();
AlertDialog alertDialog = new AlertDialog.Builder(Destination.this).create();
alertDialog.setTitle("Attention!");
alertDialog.setMessage(" Pay attention");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
});
alertDialog.show();
}
})
.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do nothing
}
});
builder.create();
builder.show();
これが AsyncTask クラスです。
public class LoadData extends AsyncTask<Void, Void, Void> {
ProgressDialog progressDialog;
//declare other objects as per your need
@Override
protected void onPreExecute()
{
progressDialog= ProgressDialog.show(Destination.this, "Progress Dialog Title Text","Please wait", true);
//do initialization of required objects objects here
};
@Override
protected Void doInBackground(Void... params)
{
ReadFromFile readFromFile= new ReadFromFile();
readFromFile.ReadAllData("Data");
//some other tasks to do
return null;
}
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
progressDialog.dismiss();
};
}