Вопрос по android – Показывать диалог, используя только контекст вместо экземпляра действия
Я мог бы показать диалоговое окно, если я использую экземпляр Activity, но когда я использую экземпляр Context или Application Context, диалог не отображается.
<code>AlertDialog.Builder builder = new AlertDialog.Builder(activity); builder.setTitle(title); builder.setMessage(msg); if (null != positiveLabel) { builder.setPositiveButton(positiveLabel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); if (null != listener) { listener.onOk(); } } }); } if (null != negativeLable) { builder.setNegativeButton(negativeLable, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); if (null != listener) { listener.onCancel(); } } }); } builder.create().show(); </code>
Можете ли вы дать мне решение для отображения диалогов без использования экземпляра Activity
По какой-то причине [по крайней мере в Android 2.1] тост может быть в контексте приложения, но не в диалоге прогресса
MyActivity.this - это специфический контекст действия, который не падает
MyActivity.getApplicationContext () является глобальным и будет вызывать сбои индикаторов выполнения, а в более поздних версиях также будет отображаться тосты.
Это один изMOST важные вещи, которые вы всегда должны помнить о контекстах. Есть 2 типа контекстов,Activity contexts
а такжеApplication contexts
, Вы будете наблюдать во многих классах, связанных с пользовательским интерфейсом, передается контекст. Это не контекст приложения! В таких случаях вы всегда должны передавать Контекст деятельности. За исключениемToast
Никакой другой компонент пользовательского интерфейса не будет работать с контекстом приложения.
Контекст приложения всегда передается, когда вам нужна какая-то услуга или компонент, связанный с приложением, например, диспетчер телефонии, диспетчер местоположения и т. Д.
Для пользовательских интерфейсов вы всегда должны передавать контекст, связанный с пользовательским интерфейсом, который представляет собой действие.
вы не можете создать диалоговое окно без экземпляра активности. Вызов getApplicationContext () тоже не работает. То, как я это сделал, - это вызвать метод, который создает диалог из действия, и передать «this». то есть ссылка на эту деятельность в качестве параметра.
Если вы собираетесь повторно использовать этот код в качестве компонента многократного использования или в качестве механизма для создания диалогов в нескольких местах, создайте базовый класс действий и включите этот метод и используйте его в подклассах действий по мере необходимости.