Понимание для каждого цикла в Java [дубликат]

Как я понимаю, метод uploadImageToServer() выполняет некоторое сетевое действие. Если это так, вы должны сделать это в потоке не-пользовательского интерфейса. Кроме того, в вашем коде catLoadingView.dismiss(); не будет ждать, пока ваш асинхронный процесс не будет выполнен, и сразу же скрывает представление загрузки. Вы должны использовать какой-нибудь метод обратного вызова, чтобы исправить завершение процесса загрузки, а затем отклонить ваше представление.

Это будет выглядеть так:

Ваш интерфейс обратного вызова:

interface MyCallback {
    void onUploaded();
}

ваш метод загрузки:

void upload(MyCallback callback) {
  // some async process on non-UI thread
  callback.onUploaded();
}

Наконец, вызовите ваш метод:

case R.id.socialMediaShareButton:
          catLoadingView.show(getSupportFragmentManager(),"");
          //loadingDialog = LoadingDialog.Companion.get(SocialMediaActivity.this).show();
          uploadImageToServer(new MyCallback() {
              runOnUiThread {
                 catLoadingView.dismiss();
              }
          });
          break;
14
задан Sergey Glotov 7 September 2011 в 04:34
поделиться

5 ответов

Дизайном для каждой переменной 'x' (в этом случае) не предназначен, чтобы быть присвоенным. Я удивлен, что это даже компилирует прекрасный.

String[] currentState = new String[answer.length()]; 
for (String x : currentState) { 
    x = "_"; // x is not a reference to some element of currentState 
}

следующий код, возможно, показывает то, что Вы, в действительности делают. Обратите внимание, что это не то, как перечисления работают, но это иллюстрирует, почему Вы не можете присвоить 'x'. Это - копия элемента в местоположении 'я'. (Редактирование: обратите внимание, что элемент является ссылочным типом, как таковым, это - копия той ссылки, присвоение на ту копию не обновляет ту же ячейку памяти т.е. элемент в местоположении 'я')

String[] currentState = new String[answer.length()]; 
for (int i = 0; i < answer.length(); i++) { 
    String x = currentState[i];
    x = "_";
}
31
ответ дан 1 December 2019 в 06:54
поделиться

Исходный код:

String currentState = new String[answer.length()];

for(String x : currentState) 
{ 
    x = "_"; 
}

Переписанный код:

String currentState = new String[answer.length()];

for(int i = 0; i < currentState.length; i++) 
{ 
    String x;

    x = currentState[i];
    x = "_"; 
}

, Как я написал бы код:

String currentState = new String[answer.length()];

for(final String x : currentState) 
{ 
    x = "_";   // compiler error
}

Переписанный код с ошибкой:

String currentState = new String[answer.length()];

for(int i = 0; i < currentState.length; i++) 
{ 
    final String x;

    x = currentState[i];
    x = "_";   // compiler error
}

Создание финала переменных выделяется, когда Вы делаете вещи как это (это - общая ошибка новичка). Попытайтесь сделать весь свой финал переменных (экземпляр, класс, аргументы, исключения в выгоде. и т.д....) - только делают их неокончательными, если действительно необходимо изменить их. Необходимо найти, что 90%-95% переменных являются окончательными (новички будут волновать с 20%-50%, когда они начнут делать это).

9
ответ дан 1 December 2019 в 06:54
поделиться

Поскольку x ссылка (или переменная ссылочного типа ). Вся первая часть кода делает повторно указать на ссылку на новое значение. Например

String y = "Jim";
String x = y;
y = "Bob";
System.out.println(x); //prints Jim
System.out.println(y); //prints Bob

то, что Вы повторно присваиваете ссылку y "Bob", не влияет на то, чему была присвоена ссылка x.

4
ответ дан 1 December 2019 в 06:54
поделиться

Можно преобразовать массив в Список и затем выполнить итерации как это:

String[] currentState = new String[answer.length()];
List<String> list = Arrays.asList(currentState);
for(String string : list) {
   x = "_";     
}
-1
ответ дан 1 December 2019 в 06:54
поделиться

Object x [] = {1, "ram", 30000f, 35, "account"}; для (Объект i: x) System.out.println (я); для каждого используется для последовательного доступа

-1
ответ дан 1 December 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: