У меня возникла проблема с 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
//......
}
Тогда этот метод отменяет первый progressDialog (тот, который работает).Действительно, это не важно, но я, кстати, добавляю.
@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();
}
//.................
}