2013-05-13 3 views
0

Я пробовал это, но диалоговое окно увольняется, когда действие завершено, потому что диалог принимает контекст Activity.Is есть какой-либо способ для него?Можем ли мы показать диалог после завершения Activity?

+0

Почему вы хотите отобразить диалоговое окно после завершения операции? Ответ на ваш вопрос - нет. – TheFlash

+0

НЕТ нет способа. Также, чтобы избежать исключения WindowLeakException, я проверю флажок Activity isFinishing() перед отображением диалога – Blackbelt

+0

в том же контексте активности, который вы не можете показать. –

ответ

0

Когда действие завершено, вы не можете показать диалог со ссылкой. Поскольку активность в стеке активности отсутствует. вместо этого вы можете показать диалог, указав ссылку предыдущей операции.

Или вы можете использовать startActivityForResult и показать диалоговое окно.

1

A Фрагменты жизни привязаны к деятельности, к которой она привязана, так что это ожидаемое поведение. Способ обойти это, скажем, чтобы активность B возвращала что-то в действие A до startActivityForResult. Таким образом, диалоговое окно появляется сразу после завершения действия B, но сохраняет свою жизнь через Activity A, который не будет уничтожен в этот момент времени.

-4

Вы можете попробовать сделать это с, контекст приложения

AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext()); 
//Your dialog setup here 

builder.show(); 
+0

вопрос: «можем ли мы показать?» не как показать ??? -1 –

+0

Этот код можно вызывать из действия – Greensy

+1

Всегда получать: android.view.WindowManager $ BadTokenException: Невозможно добавить окно - токен null не для приложения. Вероятно, этот способ невозможен – Oliv

0

Вы можете использовать startActivityForResult и показать диалог в нем.

Или попробуйте ниже

if(someCondition){ 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("message") 
    .setPositiveButton("Yes", this) 
    .setNegativeButton("No", this); 
    builder.show(); 
} else { 
    finish(); 
} 
2

Вы можете. Создайте отдельное действие, чтобы отобразить диалоговое окно. Определите активность диалога в манифесте следующим образом:

<activity android:name=".DialogActivity"  
     android:theme="@android:style/Theme.Dialog"         
     android:excludeFromRecents="true" android:taskAffinity="" 
     android:launchMode="singleInstance"> 
</activity> 

Определите свое диалоговое окно или все, что вы хотите показать в этой операции. Запустите эту функцию DialogActivity, когда вы закончите свою деятельность.

+1

Это вполне соответствует моим потребностям. Поскольку вопрос закрыт, вы должны добавить этот ответ на http://stackoverflow.com/q/11143033/262789, что является аналогичным вопросом. – Benjamin

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