ProgressDialog显示一次 - Android studio



我在 android studio 上的 progressDialog 有问题。创建活动时,必须加载折线图,并且需要进度对话框以等待折线图加载完成。它工作正常,但我需要在文件中保存数据流,这需要时间,所以我需要再次显示进度对话框,但它没有显示。

这是我需要再次显示的方法。

private void writeDataToString(String data, String file_name) throws FileNotFoundException {
try {
ProgressDialog progressDialog2 = new ProgressDialog(this);
progressDialog2.setIcon(R.mipmap.ic_launcher);
progressDialog2.setMessage("Loading...");
progressDialog2.show();
FileOutputStream fos = this.openFileOutput(file_name, MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fos);
osw.write(data);
osw.flush();
osw.close();
progressDialog2.dismiss();
}
catch (IOException ex) {
ex.printStackTrace();
}
}

我做错了什么?这是onCreate方法。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_records);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
progressDialog = new ProgressDialog(this);
progressDialog.setIcon(R.mipmap.ic_launcher);
progressDialog.setMessage("Loading...");
progressDialog.show();
// there are a lot of things here but I dont show it
//......
}

然后是取消第一个进度对话框(有效的方法(的方法。真的,它不在乎,但我顺便添加它。

@Override
public void onSensorChanged(SensorEvent event) {
double valor;
if (recording && takeValue) {
float[] values = event.values;
valor = Math.sqrt(Math.pow(values[0], 2) + Math.pow(values[1], 2) + Math.pow(values[2], 2));
datos.add((float) valor);
}
if (takeValue && !(open||savedOpened)) {
if (flag==149)
seg=0;
if (flag < 150)
flag++;
else{
// Here I cancel it
progressDialog.cancel();
}
//.................
}

我相信如果OutputStreamWriter 在另一个线程上运行其 write 方法(因为它不是 UI 要求(,那么当它进行调用时,它继续使用导致进度条关闭的代码,您应该查看是否有侦听器或事件在 write 方法完成时触发,并在那里调用进度对话框的关闭

最新更新