【发布时间】:2012-04-01 18:15:25
【问题描述】:
我正在尝试从添加到我的活动的Fragment 中获取 Spinner 视图,但似乎我无法获取片段或视图。
我有一个 Activity,它在它的 LinearLayout 上添加了一个 Fragment,片段的布局基于来自 Activity 意图的“额外”。一切都正确显示,我可以看到片段的所有视图,但由于某种原因,当我调用 findFragmentByTag(String tag) 时它返回 null,因此我无法调用 getView()。
这是我如何将片段代码添加到我的活动:
...onCreate(){
...
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fr = new Fragment(){
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(layoutID, container, false);
}
};
ft.add(R.id.formsListActivity_Container, fr, "form_fragment_tag");
ft.commit();
...
}
然后我尝试获取这样的片段并获取微调器视图以添加字符串数组:
Fragment f = fm.findFragmentByTag("form_fragment_tag");
Spinner spinner = (Spinner) f.getView().findViewById(R.id.city_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.city_list, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
但我得到一个空异常,因为 findFragmentByTag() 返回空
我做错了什么?我已经验证了几次代码,并且标签是相同的。 我还确保微调器的 id 在 XML 布局文件中正确,并且片段正在加载正确的 XML 布局,因为我可以看到它(如果注释从片段部分获取视图)。
【问题讨论】:
-
我知道这篇文章已经过时了,但是如果你把
Fragment放在它自己的类中,事情会容易得多。
标签: android view android-activity spinner fragment