Хотел бы обойти эту проблему.
Проблема: Как использовать то же действие, что и в диалоговом режиме, так и в полноэкранном режиме.
Решение:
- Определите свою активность в AndroidManifest.xml с темой
@android:style/Theme.Dialog
- В соответствующем файле
.Java
проверьте наличие intent
extra, определяющего режим dialog
.
- Если он не существует, установите
Theme
на android.R.style.Theme
. Это значение по умолчанию theme
, которое применяется, если вы не определили тему.
код:
boolean fDialogMode = getIntent().hasExtra("dialog_mode");
if( ! fDialogMode ) {
super.setTheme(android.R.style.Theme);
}
Альтернативное решение:
Более сложным решением является использование AlertDialog
, как показано ниже:
- Определите класс
ListAdapter
, расширенный с ArrayAdapter
.
возврат 1
в getCount
функция
@Override
public int getCount() { return 1; }
В функции getView
, inflate
layout
из activity
вам нужно и выполните любые настройки перед возвратом view
.
@Override
public View getView( int position, View view, ViewGroup group ) {
View v = view;
if( v == null ) {
v = getSystemService(Context.LAYOUT_INFLATER_SERVICE).inflate( <layout res id>, null );
}
... Do any customization here ....
return v;
}
Это определенно второй вариант, если вы не выполняете слишком много обработки в activity
class
, это может быть вариант.
Единственная причина для рассмотрения этого решения может заключаться в том, что логика для отображения его в dialog
изолирована от мест, где оно используется в качестве диалога.
Оба варианта работали для меня, но по понятным причинам я выбираю первый вариант. : -)