在Android中以编程方式创建一个下拉菜单

22

我想在不使用XML的情况下创建一个Spinner。我是Android新手,我的知识有限。目前为止,我已经有了这段代码(见上文),我想把我的Spinner放在TabActivity的其中一个选项卡中。

没有明显的错误,但当我打开我的活动时,选项卡是空的。我需要一些帮助。

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);

}

你想要在一个选项卡中添加“spinner”是什么意思?你能展示一下你想要实现的例子吗? - Emil Davtyan
2个回答

37

你需要将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);
}

编辑:

仅为澄清:如果Spinner未添加到Activity的内容中的布局中,则它不可见,所以这就是为什么您没有收到任何错误或任何东西的原因,因为在您的代码中并没有任何错误,如此而已;-)


我使用TabActivity,我的活动布局有一个TabHost。我只想在一个选项卡中使用下拉菜单,因此我没有在xml中放置下拉菜单。如何创建另一个布局(activity_my)来放置下拉菜单,并仅在此选项卡中使用它? - MavrosGatos
要将旋转动画添加到特定片段(fragment),您需要将旋转动画添加到该特定片段的布局而不是活动(activity)的布局。如果这不太清楚,请为此提出新问题。 - Darwind

0
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);
    }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接