选项卡中的微调器

时间:2010-11-01 13:30:51

标签: android tabs spinner

我在标签主机中遇到了微调器的问题:

事实上我成功地使用

进行动态制作
Spinner spinner = new Spinner(isChild() ? getParent() : this);

但我希望它由XML文件定义。像这样

Spinner spinner =  (Spinner) this.findViewById(R.id.widget10);

我使用时遇到了问题(OnItemSelectedListener())

打开选择对话时?

我需要帮助,

想你。

2 个答案:

答案 0 :(得分:2)

我们假设有两个class1和class2

在class1中定义一个方法

public static View makeSpinner(Context context) {

    View v = LayoutInflater.from(context).inflate(R.layout.spinner, null);
    Spinner spinner = (Spinner) v.findViewById(R.id.spinner);
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(context, android.R.layout.simple_spinner_dropdown_item);
    adapter.add("one");
    adapter.add("two");
    adapter.add("three");
    spinner.setAdapter(adapter);
    return v;
}

并且在你需要访问微调器的class2中定义它的setContentView,如下所示: -

setContentView(MainActivity.makeSpinner(getParent())); 

答案 1 :(得分:0)

我找到了不同的解决方案。

我的问题是我在与微调器相同的活动中有一个MapView。因此,我不能使用所描述的技术。

实际上我并不想重新设计我的整个项目,所以我只是用FrameLayout替换了XML-File中的微调器。

现在我的代码看起来像这样:

Spinner spinner = new Spinner(isChild() ? getParent() : this);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(getParent(),
                                  android.R.layout.simple_spinner_item, data);

adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

FrameLayout frame = (FrameLayout)findViewById(R.id.frameLayoutSpinnerTarget);
frame.addView(spinner);