Member 13544752 Ответов: 0

Отображение имени файла в строке выполнения в android studio


Я хочу, чтобы имя файла отображалось на индикаторе выполнения при копировании и вставке.

Что я уже пробовал:

<pre>I want to display name of file in progress bar in while copy all files 
my code is.. 
        public CopyTask() {


            dialog = new ProgressDialog(MainActivity.this);
            dialog.setTitle("Copying " + getName() );

            dialog.setMessage("Copying a file to the internal storage, this can take some time!" + getName()  );
            dialog.setIndeterminate(false);
            dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            dialog.setCancelable(true);

            dialog.setButton(ProgressDialog.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    dialog.cancel();
                    CopyTask.this.cancel(true);
                }
            });

        }

Suvendu Shekhar Giri

Итак, вы получаете какую-нибудь ошибку?
getName() является ли получение Вами правильного имени файла?

Member 13544752

нет. пожелать я заявляю getname() метод, прежде чем прогресс-бар.. Но если я не объявлял, то это показывало ошибку. Каково же ее решение

David Crow

Не имеет значения где именно getName() объявлено, до или после того, как Java все равно сможет его найти.

В вашем CopyTask() функция, я не вижу никакого кода, который делает фактическое копирование.

Когда отображается диалоговое окно, видите ли вы "копирование" в заголовке (и "копирование файла во внутренний..." в сообщении)?

Member 13544752

Вот код для копирования и вставки..Но мой вопрос заключается в том, как я могу показать имя файла на индикаторе выполнения, который копируется..


public void CopyTask1(просмотр v) {

foldername="Files1" + System.currentTimeMillis();
if (adapter == null)
вернуть;



граф инт = адаптер.getCount();


for (int i = 0; i < count; i++) {
copyfiles(i);


}

}

private void copyfiles(int position) {
Запись UsbFile = adapter.getItem(позиция);

Тост.makeText(в MainActivity.это,"файлы"+адаптер.getCount(),тост.LENGTH_SHORT).показать();



// вернуть;
//}

если (ContextCompat.checkSelfPermission(это, манифест.разрешение.Слушайте)

!= PackageManager.PERMISSION_GRANTED) {

если (ActivityCompat.shouldShowRequestPermissionRationale(это,
Манифест.разрешение.Слушайте))
{


Тост.makeText(это, строку, Р..request_write_storage_perm, тосты.LENGTH_LONG).показать();
} еще

{
ActivityCompat.requestPermissions(это,
новая строка[]{Manifest.permission.Слушайте},
REQUEST_EXT_STORAGE_WRITE_PERM);
}

вернуть;
}

CopyTaskParam param = новый CopyTaskParam();

param.from = запись;

Файл f = новый файл(Environment.getExternalStorageDirectory().getAbsolutePath() + "/"+ "Files1" +"/"+foldername );


Ф.mkdirs();

int index = entry.getName().lastIndexOf(".") > 0
? entry.getName().lastIndexOf(".")
: запись.метод getname().длина();

String prefix = entry.getName().substring(0, index);
Строки ВН = запись.метод getname().подстрока(индекс);
/ префикс / должен содержать не менее 3 символов
if(prefix.length() < 3)

{
префикс += "pad";
}

пробовать {
param.to = File.createTempFile(префикс, ext, f);

}
catch (IOException e)
{
е.печатные();
}
new CopyTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,param);


}

David Crow

Я бы пошел на это таким образом:

class CopyTask extends AsyncTask<Void, String, Void>
{
    ProgressDialog dialog = null;

    protected void onPreExecute()
    {
        dialog = new ProgressDialog(MainActivity.this);
        dialog.setTitle("Copying file...");
        dialog.setIndeterminate(true);
        dialog.setCancelable(false);
        dialog.show();
    }

    protected Void doInBackground()
    {
        for (int x = 0; x < num_files_to_copy; x++)
        {
            String name_of_file_to_copy = array_of_files[x];
            publishProgress(name_of_file_to_copy);
            copyFile(...);
        }
    }

    protected void onProgressUpdate(String... values)
    {
        dialog.setMessage(values[0]);
    }

    protected void onPostExecute()
    {
        dialog.dismiss();
    }
}
Я бы тоже воздержался от звонков checkSelfPermission(), shouldShowRequestPermissionRationale(), и requestPermissions() каждый раз через петлю.

0 Ответов