Spinner OnItemSelectedListener问题

时间:2012-09-03 07:46:11

标签: android listener android-spinner

我有旋转器控制的问题。我试图动态设置微调项目。最初我在微调器中有一个项目。

当我尝试注册spinner.setOnItemSelect Listener时,它会立即调用它的onItemSelected方法。但是,我不希望在我的活动开始后立即调用此方法。

因此,我提出以下条件。

public class SpinnerActivity extends Activity implements OnItemSelectedListener {

Spinner spinner;

String[] str_arr = {"aaaaaaaa"};

private int mSpinnerCount=0;

private int mSpinnerInitializedCount=0;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spinner);

    spinner = (Spinner) findViewById(R.id.spinner1);

    spinner.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, str_arr));

    spinner.setOnItemSelectedListener(this);        

    mSpinnerCount=1;

}

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {

    if (mSpinnerInitializedCount < mSpinnerCount) {
        mSpinnerInitializedCount++;
    }

    else {

        Intent intent = new Intent(this, NextActivity.class);
        startActivity(intent);
    }

}

@Override
public void onNothingSelected(AdapterView<?> arg0) {

}
  }

但是当我尝试在微调器上选择一个项目时,它会在logcat中给出以下警告,

09-03 13:02:02.528:W / InputManagerService(59):窗口已经聚焦,忽略焦点增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@450fafb8

我认为除非旋转器的项不会改变,否则不会调用此方法。

但是我在微调器中有一个值,所以如何获得焦点,任何想法?

4 个答案:

答案 0 :(得分:2)

试试我在评论中说的话......

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {

    if (position > 0) {
       //Your actions
    }

    else {
      // Nothing or can show a toast to say user to select a value... 
    }

}

答案 1 :(得分:1)

试试这个

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {

    if (position != 0) {
       //put your actions here
    }

    else {
      // nothing here or toast 
    }

}

答案 2 :(得分:0)

我认为以下代码不正确,因为您实现了OnItemSelectedListener

spinner.setOnItemSelectedListener(this);

答案 3 :(得分:0)

当您尝试打开已打开的窗口时,或者尝试在已经聚焦的视图上执行类似onFocus的操作时,会收到此警告。

您已经在Spinner中选择了项目