Ну, это немного сложнее, чем я думал.
Я добавляю пошаговые подробности здесь.Попытайтесь следовать этому.Я смог достичь этого на уровне API 10.
И это решение предполагает, что вы должны закрывать диалоговое окно программы программно, когда пользователь нажимает кнопку «Домой» или если вам нужно было перейти к следующему действиюбез взаимодействия с пользователем
Первым шагом является создание пользовательского Spinner путем расширения класса Spinner.Допустим, я создал класс с именем CustomSpinner в пакете com.bts.sampleapp
Мой класс CustomSpinner выглядит следующим образом:
package com.bts.sampleapp;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
public class CustomSpinner extends Spinner{
Context context=null;
public CustomSpinner(Context context) {
super(context);
this.context=context;
}
public CustomSpinner(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
public CustomSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void onDetachedFromWindow() {
super.onDetachedFromWindow();
}
}
Теперь в вашем XML-файле замените элемент Spinner на этот пользовательский счетчик,
<com.bts.sampleapp.CustomSpinner
android:id="@+id/spin"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Следующим шагом будет инициализация и установка адаптера для этого счетчика в классе Activity,
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CustomSpinner spin=null;
spin=(CustomSpinner)findViewById(R.id.spin);
spin.setAdapter(spinnerAdapter); //you can set your adapter here.
}
* 1023.* Последний шаг - закрыть диалоговое окно, когда пользователь нажимает кнопку HomeButton или когда действие переходит в фоновый режим.Чтобы сделать это, мы переопределяем onPause () следующим образом:
@Override
protected void onPause() {
Log.i("Life Cycle", "onPause");
spin.onDetachedFromWindow();
super.onPause();
}
Теперь внутри onPause () вызываем метод spin.onDetachedFromWindow();
, который выполняет за вас закрытие диалогового окна с подсказкой.
Теперь, как говорится, вызов spin.onDetachedFromWindow();
из любой точки вашей Деятельности должен помочь вам программно закрыть счетчик.Так что если это то, что вы хотите, то удалите onpause()
.