ПрогрессДиалог показывает время - Android студия - PullRequest
0 голосов
/ 14 октября 2018

У меня возникла проблема с 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();

        }
       //.................
        }

1 Ответ

0 голосов
/ 14 октября 2018

Я полагаю, что это может быть, если OutputStreamWriter запускает свой метод записи в другом потоке (потому что это не требование пользовательского интерфейса), поэтому, когда он выполняет вызов, он продолжает с кодом, вызывающим закрытие индикатора выполнения, вы должны увидетьесли есть прослушиватель или событие, которое запускается, когда метод записи завершен, и вызывает dismiss для progressdialog

...