1

スピナーコントロールに問題があります。スピナーアイテムを動的に設定しようとしています。最初はスピナーに1つのアイテムがあります。

spinner.setOnItemSelectリスナーを登録しようとすると、すぐにその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

スピナーのアイテムが変更されない限り、このメソッドは呼び出されないという考えがあります。

しかし、私はスピナーに1つの価値があるので、どのように焦点を合わせるか、何か考えはありますか?

4

4 に答える 4

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... 
    }

}
于 2012-09-03T07:58:49.177 に答える
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 
    }

}
于 2012-09-03T12:03:28.583 に答える
0

OnItemSelectedListenerを実装しているため、以下のコードは正しくないと思います

spinner.setOnItemSelectedListener(this);
于 2012-09-03T07:52:18.010 に答える
0

すでに開いているウィンドウを開こうとしたり、すでにフォーカスされているビューでonFocusのようなことをしようとすると、この警告が表示されます。

ここでは、スピナーですでにアイテムが選択されています

于 2012-09-03T07:56:10.223 に答える