我在标签主机中遇到了微调器的问题:
事实上我成功地使用
进行动态制作Spinner spinner = new Spinner(isChild() ? getParent() : this);
但我希望它由XML文件定义。像这样
Spinner spinner = (Spinner) this.findViewById(R.id.widget10);
我使用时遇到了问题(OnItemSelectedListener())
打开选择对话时?
我需要帮助,
想你。
答案 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);