なんか仕様で呼び出されない
解決方法はカスタムspinnerを作る事!
package com.test;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.Spinner;
public class CustomSpinner extends Spinner {
public CustomSpinner(Context context)
{ super(context); }
public CustomSpinner(Context context, AttributeSet attrs)
{ super(context, attrs); }
public CustomSpinner(Context context, AttributeSet attrs, int defStyle)
{ super(context, attrs, defStyle); }
@Override public void
setSelection(int position, boolean animate)
{
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position, animate);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
@Override public void
setSelection(int position)
{
boolean sameSelected = position == getSelectedItemPosition();
super.setSelection(position);
if (sameSelected) {
// Spinner does not call the OnItemSelectedListener if the same item is selected, so do it manually now
getOnItemSelectedListener().onItemSelected(this, getSelectedView(), position, getSelectedItemId());
}
}
}
のCustomSpinnerクラスを作成
MainActivityで
CustomSpinner customSpinner;
を作って(インポートしてね!)
XMLは
<com.test.CustomSpinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/customSpinner"
android:layout_weight="1" />
で
customSpinner= (CustomSpinner) layout.findViewById(R.id.customSpinner);
ってすれば普段通りの
customSpinner.setAdapter(adapter);
customSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
final int position, long id) {
if(powarOn) {
powarOn = false ;
return ;
}
//動作すること
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
で同じもの選択されたときにonItemSelectedが流れます


onItemSelectedで同じ項目を選択しても反応しないから、onNothingSelectedが呼ばれると思い込んでハマっていました!
ありがとうございます。
(onNothingSelectedがSpinner以外をタップしても呼ばれないので、どのタイミングで呼ばれるか謎のままですが。)