2013-04-11 2 views
8

Я хочу знать, будет ли когда пользователь нажимает «Да» в диалоговом окне предупреждения, и это отклоняется, это событие выполняет метод onResume активности, в котором находится пользователь.Вызов метода метода после предупреждения в Android?

Потому что у меня есть «Чистый ", которая спрашивает пользователя, действительно ли он уверен в очистке всех полей формы (активности), чтобы перерисовать активность с пустыми полями. Форма создается динамически, поэтому я не знаю априори элементов в графическом интерфейсе, чтобы установить их пустым ...

Извините за мой плохой английский !!

Спасибо и приветствую!

+0

Если вы хотите определить, когда пользователь сделал что-то, вы можете использовать логическое значение, которое будет ложным при запуске и true при положительном нажатии кнопки? –

ответ

15

Не уверен, если это подход, который должен быть но вы должны быть в состоянии делать то, что, как я думаю, вы запрашиваете. Если по какой-то причине это то, чего вы хотели бы достичь.

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("Do you want to clean?") 
     .setPositiveButton("Yes", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
      ((ActivityName) appContext).onResume(); 
     } 
     }) 
     .setNegativeButton("No", new DialogInterface.OnClickListener() 
     { 
     public void onClick(DialogInterface dialog, int id) 
     { 
      dialog.dismiss(); 
     } 
     }); 
    builder.create().show(); 
} 

Вы действительно хотите, чтобы называть вашу чистую функцию вместо чего-либо, как жизненный цикл вызова на успех ничего не делая на провал.

Еще один возможный способ приблизиться к этому - это вернуть текущую деятельность на фронт с использованием флагов.

Intent intent = new Intent(this, CurrentlyRunningActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

Который также обеспечит способ вызова на вашу основную деятельность без прямых ссылок на вызове onResume(), как было отмечено, не соответствующий подход; Тем не менее, я действительно хотел непосредственно ответить на вопрос, как его просили.

+4

Вызов 'onResume' вручную - это абсолютно нет, –

0

AFAIK Это невозможно, так как для отображения диалогового окна действие уже передало состояние onResume. Проверьте следующую страницу для получения дополнительной информации жизненного цикла на Android приложение (это действительно помогло мне лучше понять):

App lifecycle

+0

Итак, что вы говорите, так это то, что когда предупреждение появляется на экране, это не приводит к тому, что активность будет на фоне? это все еще на переднем плане? –

+0

@alois.wirkes Это хороший вопрос, о котором я не уверен. Однако я думаю, что вы должны взглянуть на ответ codeMagic. Вы, вероятно, не должны перерисовывать макеты для очистки материала, но должны использовать 'setText()'. Просто нажмите кнопку «Да» диалога, чтобы вызвать метод, который делает очистку, которую вы желаете. – TronicZomB

0

Если вы не уверены, когда onResume называется, добавить журнал в onResume метод.

1

Чтобы узнать, вызван ли метод, вы можете установить точку останова в методе onResume(), чтобы узнать, что произойдет. Если вы не знакомы с жизненным циклом Acitvity, то это поможет вам ознакомиться с ним и прочитать предоставленную документацию.

Теперь, я не думаю, что вы должны перерисовать все свое layout, просто чтобы очистить Views. На мой взгляд, было бы более эффективно сбросить все поля, используя setText() или другой метод для того, что вам нужно, когда пользователь нажимает «ok» или что-то еще. Вы можете использовать invalidate() если вам нужно перерисовывать определенный Views

Я также рекомендую смотреть

Google I/O-Turbo Charge Your UI

Activity LifeCycle < - очень важно, чтобы понять

Смежные вопросы