Создайте программный андроид spinner

Я хочу создать spinner без использования xml. Я новичок в андроиде, и мои знания ограничены. К настоящему времени у меня есть этот код (см. Выше), и я хочу, чтобы мой счетчик находился на вкладках моей TabActivity. Нет очевидной ошибки, но когда я открываю свою активность, вкладка пуста. Я был бы признателен за помощь.

public class Search extends Activity {

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);


}

Ответ 1

Вам нужно добавить Spinner в макет.

Сначала создайте container для Spinner, а затем создайте Spinner и добавьте его в container. Затем настройте содержимое Activity на container.

Это можно сделать так, в вашем методе onCreate:

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

    LinearLayout layout = new LinearLayout(this);

    ArrayList<String> spinnerArray = new ArrayList<String>();
    spinnerArray.add("one");
    spinnerArray.add("two");
    spinnerArray.add("three");
    spinnerArray.add("four");
    spinnerArray.add("five");

    Spinner spinner = new Spinner(this);
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
    spinner.setAdapter(spinnerArrayAdapter);

    layout.addView(spinner);

    setContentView(layout);
}

EDIT:

Просто пояснить: если Spinner не добавляется в содержимое Activity внутри макета, он не отображается, поэтому почему вы не получаете никаких ошибок или чего-то еще, потому что есть никаких ошибок в вашем коде, -)

Ответ 2

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        LinearLayout layout = new LinearLayout(this);

        // The following can also be done using a loop
        ArrayList<String> spinnerArray = new ArrayList<String>();
        spinnerArray.add("one");
        spinnerArray.add("two");
        spinnerArray.add("three");
        spinnerArray.add("four");
        spinnerArray.add("five");


        Spinner spinner = new Spinner(MainActivity.this);
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_dropdown_item, spinnerArray);
        spinner.setAdapter(spinnerArrayAdapter);
        layout.addView(spinner);
        setContentView(layout);
    }
    }